在ASP.net MVC中自定义无效日期的错误消息

9

我有一个带日期的ASP.net MVC模型:

public class EditModel
{ 
    [Display(Name="DOB")]
    public DateTime? DateOfBirth { get; set; }
}

@Html.TextBoxFor(m => m.DateOfBirth)
@Html.ValidationMessageFor(m => m.DateOfBirth)

当用户输入无效日期,例如9/31/2011时,错误消息会返回如下信息: The value '9/31/2011' is not valid for DOB. 这是在尝试进行模型绑定时发生的,而不是我的任何验证之一。是否有一种方式可以自定义此错误消息?我希望它变成这样: Please enter a valid date for the Date of Birth. 我不要求用户输入日期,但是当他们输入无效值时,我想自定义错误信息。
4个回答

5

您可以使用数据注释来处理错误,或者在这种情况下,您可以这样做:

@Html.ValidationMessageFor(m => m.DateOfBirth , "Please enter a valid date for the Date of Birth.") 

1
这会影响到所有的错误。我有其他的验证,我不想覆盖它们。此外,我目前正在使用它是因为我想在文本框旁边显示一个*号,并使用验证摘要来显示完整的错误信息。 - Dismissile
然后为其编写自定义验证器,并将无效日期的消息与该验证器一起放置。 - Jared Peless

5
请尝试这个:

[DataType(DataType.Date, ErrorMessage = "Please enter a valid date.")]
public System.DateTime DateOfBirth { get; set; }

希望这可以帮到你.. :)

1
public class myClass()
{

    [Display(Name="Date of Birth"), DataType(DataType.Date, ErrorMessage = "Please enter a valid date for the Date of Birth.")]
    public string dateOfBirth { get; set; }
}

3
FYI,似乎在使用DataType属性时会忽略ErrorMessage。它会显示一个错误消息,但不是ErrorMessage参数中指定的那个消息。请参见MVC Datatype ErrorMessage - Nicholas Westby

0

我遇到了数据类型错误的错误信息 使用正则表达式将其删除

[Display(Name="Date of Birth")]
[RegularExpression(@"^(3[01]|[12][0-9]|0[1-9])[-/](1[0-2]|0[1-9])[-/][0-9]{4}$", ErrorMessageResourceName = "DateNotValid", ErrorMessageResourceType = typeof(Resources))]
    public string dateOfBirth { get; set; }

DateNotValid:在资源文件中使用。如果需要,可以更改为错误消息 日期格式为:dd-MM-YYYYY


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接