ASP.NET MVC 3 绑定与验证 html 文本框控件的日期

发布于 2024-12-08 08:23:15 字数 410 浏览 3 评论 0原文

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

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

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

我该如何操作:

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

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

I have a SmallDateTime field in my Sql Server 2008 database to store users Birthdays.

On my 'Edit Profile' web page, I have a standard textbox which I want to bind the 'Birthday' date to (excluding the time as this is not required). At present I am binding to the textbox but it is rendering the full Date and Time.

In addition, when the user updates their profile, I want to be able to validate the Birthday textbox, ensuring that the value specified complies to dd/mm/yyyy, and any deviation from that is highlighted via my existing validation summary on the page.

How do I go about:

a) configuring the Birthday property in my ViewModel to display in dd/mm/yyyy format (excluding the time).

b) validate Birthday (based on dd/mm/yyyy format) when the user submits the form?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

沦落红尘 2024-12-15 08:23:15
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)]
public DateTime DateOfBirth { get; set; }

这将为您提供字段的自动格式化(无需您手动执行)以及验证。

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

This should give you the automatic formatting on the field (without you having to manually do it) and also the validation.

小镇女孩 2024-12-15 08:23:15

我通常使用与 DateTime 对象配对的字符串属性,就像

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

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

HTH

M.

编辑:有关验证的内容,请参阅:有关 SO 的其他问题

I usually use a string property paired with the DateTime object, something like

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

I know that is not the canonical way, but up to now, is the fastest I've found.

HTH

M.

EDIT: for the validation stuff see this:other question on SO

享受孤独 2024-12-15 08:23:15

a)您可以使用 .ToShortDateString 呈现没有时间的日期时间。格式仍然取决于全球化默认值。

b)为了进行验证,您可以在模型上使用数据注释来完成此操作,如下所示:

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

a) you can use .ToShortDateString to render your datetime without time. Format still depends on globalization defaults.

b) to validate, you could do it with Data Annotations on your model like this:

[DataType(DataType.DateTime, ErrorMessage = "Please enter a valid date in the format dd/mm/yyyy")]
public DateTime Birthday { get; set; }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文