所以我的控制器中有一个HttpPost需要我模型中的对象。然后根据操作的成功返回HttpStatusCodeResult。在我看来,我想根据状态代码结果运行一些基本的javascript,而不是重定向到新的页面。我只是用AJAX做这个,但我需要用一个表单发送对象。我该怎么做呢?
答案 0 :(得分:1)
您可以序列化表单并通过ajax发送。您的模型绑定将正常工作。发送客户端js代码可以读取并执行CUSTOM函数的响应。
示例,您可能有一个包含这样的表单的创建视图
@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"});
}