0

MVVM パターンを使用してビューを設定している場合、つまり、モデル クラスに加えてビュー モデルを使用している場合。モデル クラスはビューと対話しません。ビューモデルはビューにデータを取り込みます。

このようなシナリオで、検証などにデータ注釈を使用する必要がある場合は、モデル クラスではなくビュー モデル クラスに注釈を付ける必要がありますよね?

たとえば、[Required] 属性に注釈を付ける必要があります。

namespace MyApp.ViewModels
{
    public class Category
    {
        [Required]
        [StringLength(50)]
        public string CategoryName { get; set; }

        [StringLength(255)]
        [AllowHtml]
        public string Description { get; set; }
    }
}

または、次のようにする必要があります。

namespace MyApp.Models
{
    public partial class Category
    {
        [Required]
        public virtual string CategoryName
        {
            get;
            set;
        }
    }
}
4

1 に答える 1

2

正解です。ビューモデルは Models(entity) を使用するべきではありませんが、モデル プロパティを含めることができます。例:

//wrong
public class Person{
     public string FirstName{get;set;}
     public string LatsName{get;set;}
}

public class ViewModel{
     public Person Person{get;set;}
}

これはビューモデルのより良い使い方です:

public class ViewModel{
     public string FirstName{get;set;}
     public string LastName{get;set;}
}

はい、注釈はビューモデルにある必要があります。


ビューモデルでも注釈を複合型に設定できますが、複合型はエンティティ/ドメイン クラスではなく、ビューモデルのみに固有のデータ モデル クラスであることに注意してください。例:

public class InsertPerson{
     [Required]
     public string FirstName{get;set;}
}

public class EditPerson{
     [Required]
     public string Id{get;set;}

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

public class ViewModel{
     public InsertPerson insertPerson{get;set;}
}
于 2012-12-12T11:22:59.630 に答える