16

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

    private static MvcHtmlString FormattedDateTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> 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 已经有了这个功能,但不幸的是我的项目是在 MVC3 上编写的。你能帮助我吗?

4

5 回答 5

44

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

@Html.TextBoxFor(m => m.Birthdate, "{0:MM/dd/yyyy}")
于 2013-09-12T20:24:18.463 回答
14

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

例如:

   @Html.TextBoxFor(x => x.DateUtc, "{0:yyyy-MM-dd HH:mm:ss}",
            new { @class = "form-control", placeholder = "Enter Title", id="myDate"})
于 2015-08-01T10:34:46.540 回答
3

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

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

这是它应该在视图中执行的操作:

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

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

于 2012-12-05T14:15:23.030 回答
3

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

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

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

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

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

于 2017-11-01T11:16:56.530 回答
2

这种格式将帮助您:

@Html.TextBoxFor(Model => Model._facadeLowdown.DoB, new { @value= Model._facadeLowdown.DoB.HasValue ? Model._facadeLowdown.DoB.Value.ToString("MM/dd/yyyy") : ""
}
于 2016-04-09T07:22:57.957 回答