0

Visual Web Developer 2010 と ASP .NET と MVC2 を使用して、シンプルな顧客管理モジュールを作成しました。このモジュールでは、ビューで名、姓、住所などを入力できます。送信すると、新しい「ID」が割り当てられます。 CustomerModel インスタンスの CustomerID プロパティ。

顧客を作成するための Controller メソッド (CustomerController) は次のとおりです。

<HttpPost()> _
Public Function CreateCustomer(ByVal model As CustomerModel) As ActionResult
    model = Me.customerServiceClientValue.CreateCustomer(model)
    Return (View(model))
End Function

コントロールが CreateCustomer () メソッド内に到達し、カスタマー サービスを呼び出して顧客を作成することがわかります。このサービスは、新しい ID を持つ顧客も返します。メソッドと同様に、サービス呼び出しから返された顧客インスタンスは、入ってきた「モデル」変数に割り当てられます。そのモデル インスタンスは、return ステートメントの「ビュー」に渡されます。しかし、ビューを更新すると、顧客 ID フィールドの値が表示されません。

顧客 ID フィールドに次のマークアップがあります。

<div class="editor-label">
    <%: Html.LabelFor(Function(model) model.CustomerID)%>
</div>
<div class="editor-field">
    <%: Html.TextBoxFor(Function(model) model.CustomerID)%>
    <%: Html.ValidationMessageFor(Function(model) model.CustomerID)%>
</div>

私は何を間違っていますか?モデルに新しい顧客 ID が含まれているのに、フィールドで顧客 ID を取得できないのはなぜですか? あなたのすべての助けに感謝します。

よろしくお願いいたします。

ディネシュ・ジャヤデヴァン

4

1 に答える 1

2

TextBoxFor(および他のヘルパー) は常に投稿値を最初に表示するためです。post 値が存在しない場合は、モデルを調べます。これは、フォームにエラーがある場合、通常、変更された可能性のあるモデル データではなく、投稿されたものと同じデータをフォームに表示する必要があるためです。

それを防ぐためにコントローラーを呼び出すことができますModelState.Clear();が、それは良い考えではありません。

このhttp://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspxの詳細情報

于 2010-10-04T16:33:47.770 に答える