如何让ActionResult不重定向页面?

时间:2015-10-13 19:48:04

标签: javascript c# ajax asp.net-mvc

所以我的控制器中有一个HttpPost需要我模型中的对象。然后根据操作的成功返回HttpStatusCodeResult。在我看来,我想根据状态代码结果运行一些基本的javascript,而不是重定向到新的页面。我只是用AJAX做这个,但我需要用一个表单发送对象。我该怎么做呢?

1 个答案:

答案 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"});  
}