ASP.NET MVC 3 Binding&验证日期为html文本框控件

时间:2011-10-06 08:21:18

标签: c# asp.net-mvc asp.net-mvc-3 data-annotations model-binding

我的Sql Server 2008数据库中有一个SmallDateTime字段用于存储用户生日。

在我的“编辑个人资料”网页上,我有一个标准textbox,我想将“生日”日期绑定到(不包括时间,因为这不是必需的)。目前我绑定到文本框但它正在呈现完整的日期和时间。

此外,当用户更新其个人资料时,我希望能够验证生日文本框,确保指定的值符合dd/mm/yyyy,并且通过我现有的验证摘要突出显示任何偏差。页面。

我该怎么做:

a)在我的ViewModel中配置Birthday属性以dd/mm/yyyy格式显示(不包括时间)。

b)当用户提交表单时验证生日(基于dd/mm/yyyy格式)?

3 个答案:

答案 0 :(得分:1)

[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)]
public DateTime DateOfBirth { get; set; }

这应该可以让您自动格式化字段(无需手动执行)以及验证。

答案 1 :(得分:0)

我通常使用与DateTime对象配对的字符串属性,类似于

public string MyDateStr 
{
   get 
   {
       return MyDateDate == null ? "" : MyDateDate.ToShortDateString();
   }
   set
   {
      // Usually a tryParse for the string value
   }
}

我知道这不是规范的方式,但到目前为止,这是我发现的最快的。

HTH

微米。

编辑:对于验证内容,请参阅:other question on SO

答案 2 :(得分:0)

a)您可以使用.ToShortDateString无需时间渲染日期时间。格式仍取决于全球化默认值。

b)要验证,您可以使用模型上的数据注释来执行此操作:

[DataType(DataType.DateTime, ErrorMessage = "Please enter a valid date in the format dd/mm/yyyy")]
public DateTime Birthday { get; set; }