0

Razor と C# で MVC を使用しています。要素を更新したい... ajaxを使用したカウンター。これが私のコードです:

@model Domain.CounterObject
@using (Ajax.BeginForm("Count", "CounterObject", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "my-control" }))
{
    <div id="my-control" class="bid-object">
        <div>
            <span class="title">@Html.Encode(Model.Title)</span>
        </div>
        <div>
            <span class="display">@Html.Encode(Model.GetFinalDate())</span>
        </div>
        <div>
            <span class="display">@Html.Encode(Model.GetValue())</span>
        </div>
        <div>
            <input type="submit" value="Count" />
        </div>
    </div>
}

私のコントローラーには、次のコードがあります。

[HttpPost]
        public PartialViewResult Count(CounterObject counter)
        {
            // Special work here
            return PartialView(counter);
        }

問題は、Count メソッドで受け取る CounterObject カウンターが常に null であることです。ページからコントローラーに値を渡すにはどうすればよいですか?

4

3 に答える 3

0

Count メソッドで受け取るのは常に null です

まず、フォームから何も送信していない場合、バインディングはどのように行われますか? ユーザーが値を編集することを許可されていないにもかかわらず、フォームから値を送信したい場合はhidden fields、それらと一緒に使用する必要があります。

たとえば。

<div>
   <span class="title">@Html.Encode(Model.Title)</span>
   @Html.HiddenFor(m => m.Title)
</div>

バインドを正常に行うには、非表示フィールドにプロパティと同じ名前を付ける必要があることに注意してください。

のように簡単にバインドできるように、モデルにGetFinalDate()と結果を格納するプロパティを設定することをお勧めします。GetValue()Title

于 2012-06-25T17:26:33.960 に答える
0

ModelBinder が CounterObject にバインドできる名前と ID を持つ入力フィールドを定義する必要があります。

@Html.EditorForModel を 1 回使用してから、生成された Html を調べて、生成されている名前と ID のペアの種類を確認できます。必要に応じて、これらを使用して Html を手作りすることができます。

于 2012-06-25T16:02:13.003 に答える
0

使用する

<span class="title">@Html.Encode(Model.Title)</span>
<div class="editor-field">@Html.EditorFor(Model => Model.Title)<div>
//For other fields

このようにして、オブジェクトにバインドできます。

于 2012-06-25T16:53:39.660 に答える