自定义错误消息没有在ASP净MVC 3工作日期时间验证(Custom error message n

2019-10-17 04:36发布

我有一个字符串属性视图模型,后面的数据注释:

编辑用绳子工作

[DataType(DataType.Date, ErrorMessage="Not Working !!!")]
public String StringBirthDate1 { get; set; }

这是我的看法

@Html.EditorFor(model => model.StringBirthDate1 )
@Html.ValidationMessageFor(model => model.StringBirthDate1)

如果我跑我的应用程序,并把无效的日期,如“---”或1900年2月29日我没有得到任何验证错误!

Answer 1:

在我看来,那[数据类型(DataType.Date,的ErrorMessage =“不工作!”),当它连接到字符串属性的工作。 尝试使用:

[DataType(DataType.Date, ErrorMessage="Not Working !!!")]
puplic string StringBirthDate1{get;set;}

public DateTime BirthDate1 
{ 
    get{return DateTime.Parse(StringBirthDate1);} 
    set{StringBirthDate1 = value.ToString();} 
}


Answer 2:

好吧,我已经放弃试图使用内置的MVC工具进行数据验证!

我做了一个自定义验证属性:

public class ValidDateStringAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        DateTime dtout;
        if (DateTime.TryParse(value.ToString(), out dtout ))
        {
            return true;
        }
        return false;
    }
}

这是我饰以自定义属性视图模型:

[ValidDateString(ErrorMessage="Invalid date format")]
public String BirthDate1 { get; set; }

奇迹般有效 :-)



Answer 3:

我不喜欢任何我发现这样的解决方案,我坚持可能性戳,直到我想出了一个我不喜欢。 我加利用从这篇文章的正则表达式正则表达式验证: http://answers.oreilly.com/topic/226-how-to-validate-traditional-date-formats-with-regular-expressions/

    [Required(ErrorMessage = "Birthdate is required. [MM/DD/YYYY]")]
    [RegularExpression(@"^([1-9]|0[1-9]|1[0-2])[- / .]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$", ErrorMessage = "Birthdate must be in MM/DD/YYYY format.")]
    public Nullable<DateTime> Birthdate { get; set; }

其结果是,如果该字段为空,我得到所需的错误消息,如果有的话是在该领域,但它不是一个有效的日期,我得到的正则表达式的消息。

我想补充一点,似乎很愚蠢的[数据类型]不接受的错误信息。 我想正是这样线程的原作者。 这将是合乎逻辑和直观。



文章来源: Custom error message not working for DateTime validation in asp net mvc 3