ASP.NET MVC 2 で、フィールドがビュー モデルによって提供される情報に基づいているが、投稿されたデータがスリムな編集モデルによって表されるそのデータのサブセットであるフォームがある状況があります。編集モデルに簡単なデータアノテーションのバリデーションを追加したいのですが、ビューがビューモデルに基づいているため、どうすればよいかわかりません。
1 に答える
1
ビュー モデルとコントローラー アクションのパラメーターは同じである必要はありません。
あなたの場合、これは、より豊富なモデル クラスを使用してビューを生成している可能性があることを意味します (必要以上の情報を投稿している可能性もあります) が、コントローラー アクションは、投稿されたデータからの一部の情報のみを使用して、より単純なアプリケーション モデル オブジェクト インスタンスにデータを入力します。問題ない。フィールドの命名がプロパティを正しく入力するのに十分である限り。
次の 2 つのクラスがある場合があります。
public class User
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
public class Person: User
{
public string Name { get; set; }
public string Address { get; set; }
}
次に、ビューが使用Person
し、コントローラーアクションに type のパラメーターが含まれますUser
。罰金。それが動作します。
これらのクラスが互いに継承する必要もありません。この単純な例では、両方が共通のプロパティ名を共有しているため、そのようにしました。ただし、ポストされたフィールド名がコントローラー アクション パラメーター クラス プロパティにモデル バインドできる限り、それらは何らかの形や形で関連付ける必要はありません。
于 2011-04-15T01:14:13.200 に答える