MVC3在提交后接收新模型数据

时间:2012-08-07 15:51:20

标签: c# asp.net-mvc-3 post model submit

我无法更新视图模型。

我有一个名为:概述

的视图

我在视图的控制器中有这个:

public ActionResult Overview()
{
    var evo = new OverviewViewObject
    {
        MvcGridModel = new MvcGrid(),  
        SingleExportData = new SingleExportData()
    };

    return View(evo);
}

然后我有救 按钮调用:

$.ajax({
         url: saveUrl,
         cache: false,
         type: "post",
         data: JSON.stringify({  Name:  myName  }),
          contentType: "application/json",
          success: function (data) { .. }...

saveUrl转到:

[HttpPost]
public ActionResult Save(MyDataType saveData)
{
    //todo save logic here

    var mvcGridModel =  GetGridData();
    var evo = new ExportDataOverviewViewObject
    {
        MvcGridModel = mvcGridModel ?? new MvcGrid(),
        SaveData = new MyDataType()
    };

    return View("Overview", evo);
}

它在Save中运行良好,它可以很好地保存saveData对象中的数据,并且它不会返回任何错误直到结束,但是当它返回后显示视图时,数据不显示在那里了。

你能帮我吗?

1 个答案:

答案 0 :(得分:2)

几句话:

  • 如果“保存”按钮是表单提交按钮或锚点,请确保在$ .ajax调用后从回调中返回false以确保未执行默认操作
  • 在您的控制器操作中,您将返回完整视图(return View())而不是部分视图,这是使用AJAX调用的控制器操作更常见的。

所以回顾一下:

$('#saveButton').click(function() {
    $.ajax({
        url: saveUrl,
        cache: false,
        type: 'POST',
        data: JSON.stringify({ Name: myName }),
        contentType: 'application/json',
        success: function (data) { 
            // do something with the data => refresh some
            // portion of your DOM
            $('#someDivId').html(data);
        }
    });
    return false;
});

和您的控制器操作:

[HttpPost]
public ActionResult Save(MyDataType saveData)
{        
    //todo save logic here

    var mvcGridModel = GetGridData();
    var evo = new ExportDataOverviewViewObject
    {
        MvcGridModel = mvcGridModel ?? new MvcGrid(),
        SaveData = new MyDataType()
    };
    return PartialView("Overview", evo);
}