0

ASP.NET MVC 2 で、フィールドがビュー モデルによって提供される情報に基づいているが、投稿されたデータがスリムな編集モデルによって表されるそのデータのサブセットであるフォームがある状況があります。編集モデルに簡単なデータアノテーションのバリデーションを追加したいのですが、ビューがビューモデルに基づいているため、どうすればよいかわかりません。

4

1 に答える 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 に答える