1

これがモデルです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 を使用する多くのフィールドは、モデルを変更で返すだけのビューを置き換えることなく、これを行うことができます

4

1 に答える 1

0

ModelState.Clear()HttpPost アクション メソッドを呼び出してみてください。Html ヘルパーは、最初に ModelState の値を使用し、次にモデルを使用します。したがって、投稿のモデルの値を変更する場合は、ModelState から値をクリアする必要があります。

于 2012-07-12T09:28:27.047 に答える