我有两个View (Create and Completed)
和一个Controller
。我使用Ajax
在弹出窗口中创建新记录(Create)
,在操作成功后,我想关闭Create
并显示Controller
返回的消息。虽然我可以在Create
视图上轻松显示该消息,但我无法将此消息传递到Completed
视图(我想关闭或隐藏Create
并打开Completed
以显示消息那么,你能否澄清我如何成功呢?另一方面,是否无法确定请求是否是带有Request.IsAjaxRequest()
方法的Ajax请求,如下所示。任何想法?
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Exclude = null)] MyModel model)
{
if (ModelState.IsValid)
{
//... (removed for brevity)
TempData["message"] = "Operation succeeded.";
var redirectUrl = new UrlHelper(Request.RequestContext).Action("Completed", "Home", new { /* params */ });
return Json(new { success = true, message = TempData["message"], url = redirectUrl });
}
}
查看:
$('form').submit(function (event) {
event.preventDefault();
$.ajax({
type: "POST",
url: '@Url.Action("Create", "Home")',
data: formdata,
dataType: "json",
processData: false,
contentType: false,
success: function (response) {
if (response.success) {
//I can pass id in the url, but I need to pass response.message as parameter
window.location.href = 'Url.Action("Completed", "Home", new { id=1 })';
}
}
});
});
另一方面,即使我从使用Request.IsAjaxRequest()
而不是{{1的另一个视图(在新页面视图上创建)发出请求,Controller中的Html.BeginForm
也始终返回true。 }}。 MVC5中的Ajax post
是否有问题?
Request.IsAjaxRequest()
任何帮助将不胜感激。
答案 0 :(得分:1)
在window.location.href = 'Url.Action("Completed", "Home", new { id=1 })';
之前的ajax成功块中,使用alert(response);
如果成功阻止出现阻止,则删除不必要的