所以我的 Controller 中有一个 HttpPost,它需要我的模型中的一个对象。然后,它根据操作的成功返回 HttpStatusCodeResult。在我看来,我想根据状态代码结果运行一些基本的 JavaScript,而不是重定向到新页面。我只需使用 AJAX 即可完成此操作,但我需要使用表单发送对象。我该如何去做呢?
最佳答案
您可以序列化表单并通过 ajax 发送。您的模型绑定(bind)将会正常工作。发送一个响应,您的客户端 js 代码可以读取并执行您的自定义函数。
例如,您可能有一个具有如下形式的创建 View
@model CreateCustomerVM
@using(Html.Beginform())
{
@Html.TextBoxFor(s=>s.Name)
<input type="submit" id="btnSubmit" />
}
以及处理表单发布的脚本
$(function(){
$("#btnSubmit").click(function(e){
e.preventDefault();
var frm=$(this).closest("form");
$.post(frm.attr("action"),frm.serialize(),function(res){
//do something with res here'
// if(res.Success)
// {
// alert(res.Message)
// }
});
});
});
因此,您的 HttpPost
操作方法应该读取已发布的表单,执行所需的操作并发回响应,如下所示
[HttpPost]
public ActionResult Create(CreateCustomerVM model)
{
// to do : Read from model and save
// someService.Save(model)
return Json(new { Success = true, Message="Saved successfully"});
}
关于javascript - 如何让 ActionResult 不重定向页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111362/