我在MVC 3中显示/编辑日期时遇到问题.
我已经设置了我的数据类属性如下(数据实际上是由Linq2Sql对象提供的):
[DisplayName("Date of Birth")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}", NullDisplayText = "")]
public DateTime DoB { get; set; }
Run Code Online (Sandbox Code Playgroud)
在视图中,我有:
@Html.TextBoxFor(m => m.DoB, new { @class = "date" })
Run Code Online (Sandbox Code Playgroud)
问题是,文本框总是显示日期的时间部分,例如'18/10/2010 00:00:00'
我知道我可以通过使用标准的Html.TextBox来解决这个问题
@Html.TextBox("DoB", Model.DoB.ToShortDateString())
Run Code Online (Sandbox Code Playgroud)
但我真的希望能够从数据模型中控制它.
我在网上发现的文章表明这是有效的,但我不能重复他们的成功.
任何帮助/建议将不胜感激.
如果您希望数据注释属性DisplayFormat具有任何效果,则应使用:
@Html.EditorFor(m => m.DoB)
Run Code Online (Sandbox Code Playgroud)
查看Brad Wilson 的以下博客文章,其中解释了模型元数据在ASP.NET MVC中的工作原理.
缺点是现在你不能再指定类了.一种可能的解决方案是这样做:
<div class="input-date">
@Html.EditorFor(m => m.DoB)
</div>
Run Code Online (Sandbox Code Playgroud)
然后风格:
.input-date input {
...
}
Run Code Online (Sandbox Code Playgroud)
或者您也可以编写自定义DataAnnotationsModelMetadataProvider,它允许您使用数据注释指定类,大小,最大长度等属性.
| 归档时间: |
|
| 查看次数: |
4742 次 |
| 最近记录: |