所以,假设我有一个访问日期的视图:
<%= Html.TextBoxFor(model => Model.Birthday) %>
如何让我的观点决定日期的格式?我想使用common formatting options,重要的是这是双向的(包括显示和数据输入)。
答案 0 :(得分:4)
在您的模型中,您可以使用System.ComponentModel.DataAnnotations元数据来指定您希望该属性的格式。例如
[DisplayFormat(DataFormatString="{0:MM/dd/yyyy}")]
public DateTime Birthday { get; set; }
Then, in your view, use:
<%= Html.EditorFor(model => model.Birthday) %>
不幸的是,常规HTML帮助程序不尊重元数据,因此您必须使用Html.EditorFor。
答案 1 :(得分:2)
使用特定的ViewModel类,该类具有您希望生日的格式的字符串,并使用该字符串在文本框中显示。当您发布表单时,如果您使用域对象本身的默认绑定,它应该为您解析字符串。如果您使用的是ViewModel,则必须在发布表单时对其进行解析。
答案 2 :(得分:0)
我很惊讶地发现你不能只在Html.EditorFor()中抛出一个格式字符串。我已经开始使用EditorTemplates了。
在解决方案中创建目录结构。
观看次数&gt;分享&gt; EditorTemplates
在EditorTemplates文件夹中添加新的MVC 2用户控件,并将其命名为DateTime.ascx。 Html.EditorFor(DateTime)现在将使用此用户控件进行显示。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %>
<%= Html.TextBox(string.Empty, (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty)) %>