【发布时间】:2014-05-21 14:55:09
【问题描述】:
我有以下视图,其中包含一个 Ajax.BeginForm:-
@using (Ajax.BeginForm("ChangeDevicesSwitch", "Switch", new AjaxOptions
{
InsertionMode = InsertionMode.InsertBefore,
UpdateTargetId = "result",
LoadingElementId = "progress2",
HttpMethod= "POST"
,
OnSuccess = "createsuccess",
OnFailure = "createfail"
}))
//code goes here
<p><img src="~/Content/Ajax-loader-bar.gif" class="loadingimage" id="progress2" /></p>
<div id ="result"></div>
以及将从 Ajax.Bginform 调用的以下操作方法:-
public ActionResult ChangeDevicesSwitch(SwitchJoin s)
{//code goes here
try
{
var count = repository.changeDeviceSwitch(s.Switch.SwitchID, (Int32)s.GeneralSwitchTo, User.Identity.Name.Substring(User.Identity.Name.IndexOf("\\") + 1));
repository.Save();
return RedirectToAction("Details", new { id = s.GeneralSwitchTo });
}
catch (Exception e)
{
return Json(new { IsSuccess = "custome", description = "Error occurred. Please check...." }, JsonRequestBehavior.AllowGet);
}
}
Ajax.BeginForm 返回成功时运行的脚本是:-
function createsuccess(data) {
if (data.IsSuccess == "Unauthorized") {
jAlert(data.description, 'Unauthorized Access');
}
else if (data.IsSuccess == "False") {
jAlert('Error Occurred. ' + data.description, 'Error');
}
else if (data.IsSuccess == "custome") {
alert(data.description);
}
else {
jAlert('Record added Successfully ', 'Creation Confirmation');
}
}
目前我面临的一个问题是,当 RedirectToAction 到达时,整个视图将显示在当前视图中!那么有没有办法强制我的应用程序在返回 RedirecttoAction 时不更新目标?
【问题讨论】:
-
您不能通过 ajax 进行重定向。相反,您可以将重定向 url 发送回客户端,并在
createsuccess函数上将window.location设置为提供的 url。 -
您能否通过示例代码对此提供更多建议
标签: asp.net-mvc asp.net-mvc-4 razor ajax.beginform