如何格式化MVC3中TextBoxFor()显示的DateTime?

我安装了ASP.NET MVC3。 我需要带有格式化日期的datepicker。 我尝试了这个,但它不起作用(当传递“{0:dd / MM / yyyy}”作为格式参数时,它仍然没有格式化):

private static MvcHtmlString FormattedDateTextBoxFor(this HtmlHelper htmlHelper, Expression<Func> expression, string format, RouteValueDictionary htmlAttributes) { var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); if (metadata.Model != null && metadata.Model as DateTime? != null) htmlAttributes.Add("value", string.Format(format, (DateTime)metadata.Model)); return htmlHelper.TextBoxFor(expression, htmlAttributes); } 

编辑:如果格式为“{0:dd-MM-yyyy}”,我的代码可以工作,但不仅仅是“{0:dd / MM / yyyy}”

我知道MVC4已经有了这个function,但不幸的是我的项目是在MVC3上编写的。 你能帮助我吗?

我甚至可以使用的唯一格式是:

 @Html.TextBoxFor(m => m.Birthdate, "{0:MM/dd/yyyy}") 

语法为:@ Html.TextBoxFor(表达式,字符串格式,对象htmlAttributes)

例如:

  @Html.TextBoxFor(x => x.DateUtc, "{0:yyyy-MM-dd HH:mm:ss}", new { @class = "form-control", placeholder = "Enter Title", id="myDate"}) 

在您的模型中,使用以下内容:

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

以下是它在视图中应该做的事情:

 @Html.EditorFor(model => model.YourDate, new { @class = "date" }) 

这应该给你一个格式化为dd / MM / yyyy格式的日期。

这种格式将帮助您:

 @Html.TextBoxFor(Model => Model._facadeLowdown.DoB, new { @value= Model._facadeLowdown.DoB.HasValue ? Model._facadeLowdown.DoB.Value.ToString("MM/dd/yyyy") : "" } 

展示将取决于文化。 虽然在大多数情况下所有其他答案都是正确的,但它对我不起作用。 如果附加了jQuery datepicker,文化问题也会导致不同的问题。

如果您希望以下列方式强制格式转义/:

 @Html.TextBoxFor(model => model.YourDate, "{0:MM\\/dd\\/yyyy}") 

如果没有为我逃脱它显示08-01-2010与预期08/01/2010

此外,如果没有转义jQuery datepicker将选择不同的defaultDate,在我的实例中它是May 10, 2012May 10, 2012