4

私はMVC3が初めてです。

フォームに送信ボタンがあり、内部に多くのプロパティを持つ 2 ~ 3 個のネストされたオブジェクト モデルを持つモデルをバインドしたいと考えています。

EditorFor を使用せずにこれらのネストされたオブジェクトをバインドする方法はありますか? 返されるモデルで ActionResult(Object model) を取るフォームを送信すると、ネストされたオブジェクトモデルは、html の背後にある隠し値やフォームを実装する必要なく、その値を使用してモデル化されますか?

4

2 に答える 2

2

DefaultModelBinder規則に従って機能するため、機能するには、フォーム フィールドが MVC 命名規則に準拠している必要があります。

を使用してフォームを作成したくない場合はEditorForModel、すべてのフィールドに独自の命名規則を実装し、ViewData.TemplateInfo.HtmlFieldPrefix各要素に設定する必要があります。次に、返されたフォームを取得するカスタム ModelBinder を作成し、命名規則に基づいてモデルにバインドする必要があります。

これにより、MVC3 で他の問題が発生することに注意してください。最も重要な問題は、DropDownLists およびその他の項目の控えめな検証のレンダリングが失敗する可能性があることです。

一般的なケースでは、ビューで EditorForModel を使用し、MVC の既存の規則を使用して作業するのが最善です。ネストされたモデルごとに固有のビューを作成できます。この記事では、Brad Wilson がプロセスの概要を説明しています。

于 2011-09-25T14:36:54.740 に答える
0

基本的に、モデルを再度識別するのに十分な値が必要です。したがって、非表示フィールドに Id を指定し、変更したいすべてのプロパティを使用できます。モデルを再作成するには、Id と変更された値を基本パラメーターを介してコントローラー アクションに渡すか、モデル バインダーを記述します。これが、これらの状況に対処する最善の方法です。

于 2011-09-25T12:41:53.153 に答える