当使用ASP.Net MVC的Html.TextBoxFor时,如何在强大的类型视图中格式化值

Pau*_*nza 17 format asp.net-mvc html-helper

我试图使用强类型视图的值格式化ASP.Net MVC的TextBoxFor呈现的日期.日期可以为空,所以如果它为null我想看到一个空白值,否则我希望以MM/dd/yyyy格式看到它.

<%= Html.TextBoxFor(model => model.BirthDate, new { style = "width: 75px;" })%>
Run Code Online (Sandbox Code Playgroud)

谢谢,
Paul Speranza

Dav*_*enn 25

您可以使用自定义编辑器模板Html.EditorFor()不是自定义编辑器模板来保持强类型Html.TextBoxFor().

/ Views/Shared文件夹中创建一个新的EditorTemplates文件夹,并添加一个名为DateTime.ascx的新MVC 2 View用户控件.添加以下内容

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%= Html.TextBox("", (Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : string.Empty)) %>
Run Code Online (Sandbox Code Playgroud)

然后在你的视图中使用

<%= Html.EditorFor(model => model.BirthDate)%></p>
Run Code Online (Sandbox Code Playgroud)

不要担心"",命名仍然可以正常工作.

如果要以不同的区域性格式将DateTime显示为默认的应用程序区域,则需要更改区域性信息,或者创建自定义模型绑定器,以便在回发DateTime时使模型绑定起作用.


joy*_*ym8 10

MVC4 http://msdn.microsoft.com/en-us/library/hh833694.aspx

@Html.TextBoxFor(model => model.YOUR_DATE, "{0:MM/dd/yyyy}")
Run Code Online (Sandbox Code Playgroud)


wom*_*omp -3

您是否尝试过仅传递您想要的日期格式?

Html.TextBoxFor(model => model.BirthDate.ToString("MM/dd/yyyy"), 
                new { style = "width: 75px;" })
Run Code Online (Sandbox Code Playgroud)

  • 如果我使用 &lt;%= Html.TextBoxFor(model =&gt; model.BirthDate.Value.ToString("MM/dd/yyyy")) %&gt; 我会得到异常“模板只能与字段和属性访问器表达式一起使用。 ” (6认同)