【发布时间】:2010-10-28 21:14:06
【问题描述】:
我有一个 ASP.NET MVC 表单,但其中的数据需要通过 jQuery 发布(不是 ajax)。使用普通模型无法提交,因为Controller Action需要一个JSON字符串,而获取该字符串的唯一方法是使用jQuery的$.post方法将数据转成JSON,然后将其发布到控制器。
这很好用。然而最终结果是,在发布后,表单应该重定向到不同的页面(如成功页面)。这不会发生,它只是停留在同一页面上。
如果我使用 return false;在我的 jQuery 代码中,它会阻止表单再次尝试发布,但这并不能解决我的问题。我也真的不想手动设置 URL,因为我想尽可能多地避免使用 javascript。
控制器
[HttpPost]
public ActionResult Receive([FromJson] jsonObject item)
{
if (ModelState.IsValid)
{
// logic
}
return RedirectToAction( ... );
}
JavaScript
$('.submit').click(function(e) {
var json = JSON.stringify(data);
$.post( location.href, { item: data});
});
这将正确提交代码。如果我在调试器中单步执行 return 语句,它甚至会被命中,但它永远不会重定向。我能做什么?
【问题讨论】:
-
将表单序列化为 json,将此值放入隐藏输入并调用
document.forms["myform"].submit()。它将进行常规调用,而不是 ajax 调用。
标签: jquery asp.net-mvc