これがモデルですexample.cs
namespace View_Partial_Editor.Models
{
public class ExampleView
{
...
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public string Field4 { get; set; }
public string Field5 { get; set; }
...
}
}
私はこのビューを持っています example.cshtml
:
@model View_Partial_Editor.Models.ExampleView
@{Html.RenderPartial("EditExample",Model);}
@Html.TextBoxFor(m => m.Field1)
次に、私はこの partialView を持っていますEditExample.cshtml
:
@model View_Partial_Editor.Models.ExampleView
@Html.HiddenFor(m => m.Field1)
@using (Ajax.BeginForm("EditExample", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "partial" }))
{
<div>
@Html.EditorFor(m => m, "Editor", null)
</div>
<p>
<input id="buttona" type="submit" value="Save" />
</p>
}
私はこのコントローラを持っていますExampleController
:
namespace View_Partial_Editor.Controllers
{
public class ExampleController : Controller
{
//
// GET: /Example/
public ActionResult Example()
{
return View();
}
[HttpPost]
public ActionResult EditExample(ExampleView example)
{
example.Field1 ="7";
return View("Example", example);
}
}
}
そして、これはパーシャルで呼び出されるエディターですeditor.cshtml
@model View_Partial_Editor.Models.ExampleView
<div class="editor-label">
@Html.LabelFor(m => m.Field1 )
</div>
<div class="editor-field">
@Html.EditorFor(m => m.Field1)
@Html.ValidationMessageFor(m => m.Field1)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Field2)
</div>
<div class="editor-field">
@Html.EditorFor(m => m.Field2)
@Html.ValidationMessageFor(m => m.Field2)
</div>
私の問題は、ajax呼び出しでコントローラーのモデルのデータを変更し、変更されたモデルをに戻したいということです.exampleView
しかし、呼び出されたajaxが完了すると、コントローラーで変更した値はモデルで変更されません
編集: 私が欲しいのは、呼び出しを ajax メソッドに送信し、データベースに何かを保存してから、モデルを変更することです。サンプル ビューでは、そのモデルに変更を加えたいと考えています。
この時点で、部分ビューを ajax の結果に置き換えると、サンプル ビューのモデルは変更されません。別の方法は、完全なサンプル ビューを置き換えることで、モデルはそこで受け取られますが、 Html.HiddenFor を使用する多くのフィールドは、モデルを変更で返すだけのビューを置き換えることなく、これを行うことができます