1

この質問がすでに尋ねられているかどうかはわかりません。

ASP .NET MVC 2 サイトを開発しています。私のビューには、ユーザーが編集のために表示するレコードを選択できるドロップダウンがあります。このドロップダウンが変更されると、現在選択されているレコードのフィールド値が自動的にサーバーに送信され、セッションに保存されます。サーバーは応答で、新しく選択されたレコードを編集するためのビューを返します。

私が抱えている問題は、新しいレコードが表示されたときに、前のレコードのフィールド値の一部が記憶されていることです。

私の見解では、問題を引き起こしている次のようなものがあります。

<%= Html.TextBox("ActionTypeDetails.DisplayName", 
                 Model.ActionTypeDetails.DisplayName) %>

ここでは、投稿されたデータに、DisplayNameを含む複数のプロパティを持つActionTypeDetailsというパラメーターを設定します。

私のコントローラーのアクションは次のようになります。

public ActionResult EditActionType(Guid PluginEditID, 
                                   Guid? SelectedActionTypeID, 
                                   ActionTypeViewObj ActionTypeDetails)

私はこれに私のビューを変更しようとしました:

<%= Html.TextBox("PostedActionTypeDetails.DisplayName", 
                 Model.ActionTypeDetails.DisplayName) %>

そして、これに対する私のコントローラーアクション:

public ActionResult EditActionType(Guid PluginEditID, 
                                   Guid? SelectedActionTypeID, 
                                   ActionTypeViewObj PostedActionTypeDetails)

それでも、同じ問題が発生します。なぜこのように機能するのか、ロジックを説明してもらえますか? 組み込みのモデル バインディングを引き続き使用できる最も簡単な回避策は何ですか? ModelState をクリアできることはわかっていますが、フォーム上の他のデータの一部を記憶したいので、これは理想的ではありません。

4

1 に答える 1

0

同じ URL にポストバックすると、asp.net にはフィールド値を保持するメカニズムがあります。詳細については、こちらをご覧ください

于 2011-04-08T13:52:12.693 に答える