使用编辑器模板MVC进行日期时间格式化

时间:2011-11-03 20:12:17

标签: c# asp.net-mvc-2

我想格式化TextBoxes中显示的DateTime,没有时间和格式:2011年1月1日,而不是显示和编辑方案的默认01/01/2011。

我已经在DateTime中使用以下模板来使用datepicker。我可以在某种程度上包括格式吗?

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%: Html.TextBox("",ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" }) %>

提前致谢。

2 个答案:

答案 0 :(得分:5)

<%= Html.TextBox("",  Model.HasValue ? Model.Value.ToString("dd MMM, yyyy") : "", new { @class = "text-box single-line" }) %>

或更好的视图模型:

[DisplayFormat(DataFormatString = "{0:dd MMM, yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Foo { get; set; }

答案 1 :(得分:3)

ViewData.TemplateInfo.FormattedModelValue日期时间对象吗?

从DateTime对象中获取所需的格式使用以下内容:

var now = DateTime.Now;
var formattedDate = now.ToString("dd MMM, yyyy");

这应该有效

<%= 
var theDate = Model.HasValue ? Model.Value.ToString("dd MMM, yyyy") : DateTime.Now.ToString("dd MMM, yyyy");


Html.TextBox("", theDate, new { @class = "text-box single-line" }) %>

调用Model.ToString("dd MMM, yyyy")时收到错误的原因是因为它是一个Nullable对象,而ToString()方法不接受任何参数。模型的值是DateTime对象,它接受参数。