如何在TextBoxFor ASP.NET MVC中验证DateTime

时间:2012-12-20 16:40:50

标签: c# asp.net-mvc validation asp.net-mvc-4

我有这段代码:

@Html.TextBoxFor(m => Model.MyDateTime)

MyDateTime - 是DateTime对象。 它在文本框中显示正确的日期和时间:09/10/2010 05:19:56 PM 但是当我尝试单击“提交”按钮时,它显示它的值不正确。我使用jquery.validate.unobtrusive.js文件进行验证。

3 个答案:

答案 0 :(得分:2)

我在评论中指出的解决方案的要点是,您可以为视图使用专用模型,该模型包含字符串表示而不是DateTime类型,这允许您使用RegularExpressionAttribute轻松验证值。当您在服务器上收到此模型(从客户端发布)时,只需将其转换为相应的数据库模型。

public class ViewModel
{
    [Required]
    [RegularExpression("\d{2}-\d{2}-\d{4}\s\d{2}:\d{2}:\d{2}")]
    public string MyDateTime { get; set; }

    public Model ToPoco()
    {
        return new Model {
            MyDateTime = DateTime.Parse(this.MyDateTime, "MM-dd-yyyy H:mm:ss")
        };
    }
}

public class Model
{
    DateTime MyDateTime { get; set; }
}

答案 1 :(得分:1)

数据注释适合您!

答案 2 :(得分:0)

您可以使用dataannotaion正确验证您的模型字段。使用这样的annatation你可以手动为你的注释传递字符串模式提供日期格式。在这种情况下,它将完美地使用默认的mvc验证。