8

ASP.NET MVC4 アプリ、EF コードを最初に開発します。私は基本クラスを持っています:

    public class Entity
    {
        public int Id { get; set; }
        public string Title { get; set; }
    }

そして、次のようないくつかの派生クラスがあります。

public class City : Entity
{
    public int Population { get; set; }
}

その他多くの派生クラス (Article、Topic、Car など)。ここで、すべてのクラスの Title プロパティに "Required" 属性を実装したいと思います。派生クラスごとに異なる ErrorMessages が必要です。たとえば、Topic クラスの場合は「Title must not be empty」、Car クラスの場合は「Please name your car」などです。どうすればこれを行うことができますか? ありがとう!

4

1 に答える 1

13

基本クラスでプロパティを仮想にすることができます。

public class Entity
{
    public int Id { get; set; }
    public virtual string Title { get; set; }
}

子クラスでオーバーライドし、必須にして、表示するエラー メッセージを指定します。

public class City : Entity
{
    public int Population { get; set; }

    [Required(ErrorMessage = "Please name your city")]
    public override string Title
    {
        get { return base.Title; }
        set { base.Title = value; }
    }
}

またはFluentValidation.NET、データ注釈の代わりに使用して検証ロジックを定義することもできます。この場合、さまざまな具象型に対してさまざまなバリデーターを使用できます。例えば:

public class CityValidator: AbstractValidator<City>
{
    public CityValidator()
    {
        this
            .RuleFor(x => x.Title)
            .NotEmpty()
            .WithMessage("Please name your city");
    }
}

public class CarValidator: AbstractValidator<Car>
{
    public CityValidator()
    {
        this
            .RuleFor(x => x.Title)
            .NotEmpty()
            .WithMessage("You should specify a name for your car");
    }
}

...
于 2013-08-21T17:50:09.127 に答える