ich diesen Ajax.BeginForm-Code haben:kann nicht auf neue Seite Ajax Begin umleiten
<script>
function createsuccess(data) {
if (data.RedirectUrl) {
window.location.href = data.RedirectUrl;
}
}
</script>
@using (Ajax.BeginForm("New", "Profile", null, new AjaxOptions()
{
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
OnSuccess = "createsuccess"
}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
//HTML-code
}
Hier ist meine neue Aktion in meinem Profil Controller:
[HttpPost]
public ActionResult New(Profile model)
{
model.UserId = UserId;
if (_profileService.CreateProfile(model) > 0)
{
var encryptedProfileId = Encryption.Protect(model.ProfileId.ToString(), UserId.ToString());
Response.Cookies["ProfileId"].Value = encryptedProfileId;
return Json(new { RedirectUrl = Url.Action("Index", "Welcome") });
}
return View();
}
Als ich das laufen und versucht, ein neues Profil zu erstellen, ich bin nicht Redirect. Stattdessen werde ich mit der folgenden JSON-Anzeige zurück zu meiner neuen Seite umgeleitet:
Warum werde ich nicht umgeleitet? Wer kann mir helfen?
Da Sie 'jquery.unobtrusive.ajax.js' nicht enthalten haben (bit, warum in der Welt benutzen Sie Ajax, wollen Sie umleiten) –
@StephenMuecke: Ich habe es aufgenommen. Aber es scheint nicht geladen zu sein. Und ich weiß nicht warum. – Bryan
Stephen hat Recht. Sie fügen mit AJAX viel Komplexität hinzu und profitieren davon nicht. AJAX ist speziell * für * den Server anzurufen, während die Seite nicht weitergeleitet wird. Sie sollten es eliminieren, indem Sie 'Html.BeginForm' in Ihrer Ansicht verwenden und 'return RedirectToAction (" Index "," Willkommen ");' von Ihrer Aktionsmethode anstelle von JSON zurückgeben. – NightOwl888