如何使Html.TextBoxFor DateTime接受dd.MM.yy的用户输入

时间:2012-01-12 09:47:30

标签: asp.net-mvc asp.net-mvc-3 razor

我正在尝试创建一个用户可以搜索文章的页面。可以选择根据FromDateToDate限制搜索。这两个都是DateTime

要求用户在dd.MM.yy表单上输入日期,因为这在我们国家/地区是正常的。我可以在提交表单后在URL中看到日期,它看起来像我想要的那样。但问题是MVC3假设格式为MM.dd.yy。我怎么能改变这个?

一些代码: 这是我使用的Razor代码

<div class="toDate" >
  <label>til dato</label>
  @Html.TextBoxFor(m => m.DateTo, new { placeholder = "dd.mm.yy" })
</div>

在模型中我只有:

public DateTime DateTo { set; get; }

我尝试过使用EditorFor,但是我丢失了占位符文字。

简而言之:如何让我的MVC3模型接受来自用户的日期时间输入dd.MM.yy

如果我的问题不够明确,请告诉我,我会尽力澄清。

编辑: 看来我需要一些澄清,所以我会尝试通过制作一个场景来做到这一点:

  1. 用户输入搜索条件。他在两个文本框中设置了DateFrom和DateTo。
  2. 表单已提交并发回服务器。
  3. 在服务器上,在MM.dd.yy表单上处理DateTime对象。我希望它被解释为dd.MM.yy。
  4. 我希望有所帮助。

2 个答案:

答案 0 :(得分:2)

[DisplayFormat(DataFormatString = "{0:dd MM yy}")]
pubilc DateTime DateTo { get; set }

答案 1 :(得分:1)

尝试设置自定义验证属性,您可以根据自己的喜好验证日期格式。

这是一个很好的教程:http://msdn.microsoft.com/en-us/gg618485(它并不像最初看起来那么困难,而且非常有帮助。)

或者,只需使用以下内容构建正则表达式验证属性:

RegularExpression(@"[0-3][0-9]\.[0-1][0-9].[0-9][0-9]")]

上面的正则表达式并不完美,但作为一个例子。

编辑:如果 3nigma 的解决方案适合您,那显然非常适合我的解决方案。 :)