3

そのため、MVC1.0からMVC2.0RTMへの移行を検討しています。私が従い始めたい規則の1つは、テキストボックスなどのコントロールを生成するために強く型付けされたHTMLヘルパーを使用することです。

ただし、簡単なジャンプではないようです。次のような行を置き換えて、最初のフォームを移行してみました。

<%= Html.TextBox("FirstName", Model.Data.FirstName, new {maxlength = 30}) %>

...このような行の場合:

<%= Html.TextBoxFor(x => x.Data.FirstName, new {maxlength = 30}) %>

以前は、これは次のメソッドシグネチャを使用して、POSTの適切なビューモデルにマップされていました。

[HttpPost]
public ActionResult Registration(AccountViewInfo viewInfo)

代わりに、現在、空のオブジェクトが返されます。切断は、ビューモデルを、ページメタデータやその他の楽しいものを一緒に含むより大きな集約オブジェクトに渡すという事実にあると思います(したがって、x.Data.FirstNameの代わりにx.FirstName)

だから私の質問は、MVCフレームワークが元の行のようにフォームコレクションをビューモデルに適切にキャストできるようにしながら、強く型付けされたヘルパーを使用するための最良の方法は何ですか?ビューに渡す集計タイプを変更せずにそれを行う方法はありますか?

ありがとう!

更新:したがって、bind属性はうまく機能しましたが、基本的にすべての投稿されたビューモデルにそれを適用する方法が好きではありませんでした。継承階層を変更して、すべてのビューモデルが、という名前の集約プロパティではなく、ページコンテンツやその他のメタデータを含む基本クラスから継承するようにしましたData

4

1 に答える 1

5
public ActionResult Registration([Bind(Prefix = "data")] AccountViewInfo viewInfo);

これは、すべての値がdataで始まることを期待する必要があることをバインダーに通知するため、data.FirstNameなどを検索します。

于 2010-04-09T21:19:07.487 に答える