我有一个带有3个按钮的Ajax表单用于提交/取消。邮件很好,当它重定向到它应该去的下一页时,会调用正确的操作,但新的Action将其检测为Ajax请求,而不是返回整页,它会尝试返回部分。
查看包含:
@using (Ajax.BeginForm("postingAction", "Controller", new AjaxOptions { HttpMethod = "post" }, new { id = "myId" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<buttons>
...
<input type="submit" name="Cancel" value="Cancel" class="btn btn-default" />
</buttons>
...
}
为帖子调用的操作:
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize(Roles = "userType1, userType2")]
public ActionResult postingAction(myViewModel model)
{
if (Request.Form["Cancel"] != null)
return RedirectToAction("Action2", "DiffController");
...
}
现在当这个RedirectToAction发生时,第二个动作仍然检测到它是一个Ajax调用,如何删除它是一个ajax调用并使其正常调用?
谢谢, 大卫K。
答案 0 :(得分:1)
尝试使用所需的网址返回JavaScriptResult
。
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize(Roles = "userType1, userType2")]
public ActionResult postingAction(myViewModel model)
{
if (Request.Form["Cancel"] != null)
return JavaScript( "window.location = '" + Url.Action("Action2","DiffController") + "'" )
...
}
http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.javascript%28v=vs.118%29.aspx