从控制器发送模型实例以查看并使用ajax调用将相同的模型实例发送回控制器

时间:2013-11-03 17:51:01

标签: jquery ajax asp.net-mvc c#-4.0

我将模型对象发送到强类型视图:

public ActionResult Index()
{
   ReportModel model = new ReportModel();
   return View(model);
}

我希望视图使用jquery中的ajax将相同的模型实例发送回另一个ActionMethod。

$.ajax({
        url: '/Report/getPT',
        type: 'POST',
        data: {
             model:'@Model'
        }

这是接收相同模型实例的ActionMethod。

public ActionResult getPT(ReportModel model){

}

1 个答案:

答案 0 :(得分:0)

这取决于您希望如何处理服务器上的模型以及您希望返回的内容。 您是希望返回部分视图还是只是指示提交的内容?

您有几种选择。

您可以使用Ajax表格发送模型

@using (Ajax.BeginForm("getPT", new AjaxOptions { HttpMethod="POST", UpdateTargetId = "UpdateContainer" }))
{
    <!-- FORM elements goes here... -->
}

在你看来,放置

<div id="UpdateContainer"></div>

您要渲染局部视图的位置

不要返回ActionResult,而是将操作设置为返回PartialViewResult

public PartialViewResult getPT(ReportModel repModel)
{
    // instantiate a viewmodel
    var model = new YourViewModel();
    return PartialView("YourPartial", model);
}

或者,如果你不需要它来返回部分视图,也许你只需要知道提交的方式,你可以用jQuery发送它,就像你在尝试代码一样,发送到WEB API控制器< / p>

public class ApiTestController : ApiController
{
    public bool getPT(ReportModel model)
    {
        // do the work with your model
        return ..... whatever ? :)
    }
}