Asp.net mvc 如何实现IValidatableObject?

Asp.net mvc 如何实现IValidatableObject?,asp.net-mvc,validation,model-validation,Asp.net Mvc,Validation,Model Validation,我有3个文本框,主要的想法是,如果这些字段中的任何一个是空的,就会得到一条错误消息,但我不知道如何使用它…有什么帮助吗 [Required] public int? Day { get; set; } [Required] public int? Month { get; set; } [Required] public int? Year { get; set; } public System.Collections.Generic.IEnumerable<ValidationRe

我有3个文本框,主要的想法是,如果这些字段中的任何一个是空的,就会得到一条错误消息,但我不知道如何使用它…有什么帮助吗

[Required]
public int? Day { get; set; }

[Required]
public int? Month { get; set; }

[Required]
public int? Year { get; set; }

public System.Collections.Generic.IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
    if (Day == null || Month == null || Year == null)
    {
        yield return new ValidationResult("*");
    }
}
[必需]
公共整数?日{get;set;}
[必需]
公共整数?月份{get;set;}
[必需]
公共整数?年份{get;set;}
public System.Collections.Generic.IEnumerable验证(ValidationContext ValidationContext)
{
如果(日==null | |月==null | |年==null)
{
返回新的ValidationResult(“*”);
}
}

试试这个,我希望下面的答案能对你有所帮助

继承ValidationAttribute

public class SingleMessageValidation : ValidationAttribute
{
    public override bool IsValid(object obj)
    {
        DateValidation app = obj as DateValidation;
        if (app.Day == null || app.Month == null || app.Year == null)
        {
            ErrorMessage = "In valid date enter all fields";
            return false;
        }
        return true;
    }
}
型号

[SingleMessageValidation]
public class DateValidation
{
    public int? Day { get; set; }
    public int? Month { get; set; }
    public int? Year { get; set; }
}
查看

@model DateValidation

<h2>DateValidation</h2>
@using (Html.BeginForm())
{
    @Html.ValidationSummary()

    @:Day: @Html.TextBoxFor(x => x.Day)
    <br />
    @:Month: @Html.TextBoxFor(x => x.Month)
    <br />
    @:Year: @Html.TextBoxFor(x => x.Year)

    <input type="submit" value="Click" />
}
@模型日期验证
日期验证
@使用(Html.BeginForm())
{
@Html.ValidationSummary()
@:Day:@Html.TextBoxFor(x=>x.Day)

@:Month:@Html.TextBoxFor(x=>x.Month)
@:Year:@Html.TextBoxFor(x=>x.Year) }
如何在我的视图中调用此验证?@无,我已使用视图更新了答案。选中可以避免此validationSummary,因为我想使用@Html.ValidationMessageFor(m=>m.Birthdate)。。。如果你知道我的意思?因为我有更多的字段要验证,我想在field@None,您可以尝试Java脚本验证