1

次のネストされたviewmodelクラスがあります...

public class CustomerModel
{
  public string name;
  public Address mailingAddress;
  public Address billingAddress;
}

public class Address
{
  public string line1;
  public string city;
  public string country;
}

編集ページを作成する自動化された方法があることを望んでいましたが、私が試し、読んだすべてのことは、フレームワークとコード生成がビューモデルのトップレベルのプロパティのみを処理することを示しています。'name'プロパティは、ビューとアクションで生成される唯一のプロパティであり、アドレスがnullのままになっているのは'name'プロパティのみです。

[HttpPost]
public ActionResult Edit(CustomerModel model)

ただし、(部分ビューを介して)アドレスの入力ボックスを手動で追加し、アクションのFormCollection署名に切り替えると、画面に入力された適切なアドレス値が取得されます。

FormCollectionからCustomerModelに変換する独自の関数を作成する以外に、これに対する簡単な解決策はありますか?

4

1 に答える 1

2

ここでエディターテンプレートを使用できますか?基本的に、強く型付けされた部分ビュー(アドレスはあなたの場合のタイプ)を作成し、それを特定のフォルダー(/ Views / Shared / EditorTemplates)に保存し、そのデータ型のメンバーに対してエディターがレンダリングされるたびに、部分ビューを作成します代わりに自動的にレンダリングされます。したがって、を呼び出すとHtml.EditorFor(model => model.mailingAddress)、代わりに部分ビューがレンダリングされます。

私がこれについて最初に読んだのは、DateTime検証を探していたときだったと思います。このリンクをチェックしてください、そして多分あなたの部分的なビューはいくつかHtml.EditorFor(model => model.line1)の'とHtml.EditorFor(model => model.city)'を持っているでしょう

これはすべてを超自動化するわけではありませんが、Addressなどのデータ型の将来の編集には役立ちます。

于 2010-09-15T02:50:19.043 に答える