5

私が次のものを持っているとしましょうViewModel

    public class PersonViewModel
    {
        [Required]
        public String Email { get; set; }

        [Required]
        public String FirstName { get; set; }

        [Required]
        public String LastName { get; set; }
    }

これはViewModelオリジナルEntityではありません。このモデルを 2 つの場所で使用します。最初の場所ではすべてのフィールドを検証したいのですが、別の場所ではEmailモデルの検証からフィールドを除外したいのです。フィールドを検証から除外するように指定する方法はありますか?

4

2 に答える 2

12

使用できます

ModelState.Remove("Email");

非表示フィールドに関連するモデル状態のエントリを削除します。

最善の解決策は、ビュー モデルを 2 つに分割することです。

public class PersonViewModel
{
    [Required]
    public String FirstName { get; set; }

    [Required]
    public String LastName { get; set; }
}

public class PersonWithEmailViewModel : PersonViewModel
{
    [Required]
    public String Email { get; set; }
}
于 2013-04-28T19:43:46.703 に答える
6

醜い解決策:

ModelState.Remove("Email");

推奨される解決策:
別の ViewModel を作成します。VM はビューを表すものと想定されているため、ビューに Email フィールドがない場合は、それに適した VM を作成してください。

于 2013-04-28T19:44:08.690 に答える