0

ビューモデルを更新できません。

私は次のような見解を持っています:概要

私はこれをビューのコントローラーに持っています:

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);
}

そして、保存でうまくいき、saveDataオブジェクトのデータをうまく取得し、最後までエラーを返しませんが、戻った後にビューが表示されると、データはそこに表示されなくなります。

手伝っていただけませんか?

4

1 に答える 1

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);
}
于 2012-08-07T16:02:06.540 に答える