2015-10-13 85 views
0

所以我在我的控制器中有一个HttpPost,它需要我的模型中的一个对象。然后根据操作的成功返回一个HttpStatusCodeResult。在我看来,我想根据状态码结果运行一些基本的JavaScript,而不是重定向到新页面。我只是简单地使用AJAX来做到这一点,但我需要使用表单发送对象。我会如何去做这件事?如何让ActionResult不重定向页面?

+0

使用AJAX POST? – Amit

回答

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"}); 
} 
+0

谢谢,看起来像我需要的东西。我不确定如何将对象信息发送到我猜测的httppost。 – Desquid