Err*_*sen 10 c# asp.net-mvc html5 date
我正在浏览ASP.NET MVC 4的教程(但我认为这也适用于MVC 5),您可以在其中为电影商店创建一个网站.
电影模型具有DateTime类型的ReleaseDate属性.通常,这个日期将被视为比编辑日期更多,因此我应用以下属性来很好地渲染它.
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}")]
public DateTime ReleaseDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
当显示此日期的视图呈现时使用:
@Html.DisplayFor(model => model.ReleaseDate)
Run Code Online (Sandbox Code Playgroud)
正如您所期望的那样,它显示格式正确:
但是,当编辑此日期的视图使用它时:
@Html.EditorFor(model => model.ReleaseDate)
Run Code Online (Sandbox Code Playgroud)
它显示一个可爱的HTML5日期选择器,但没有填写值,因为日期的格式错误(错误消息是The specified value '11/01/1989 00:00:00' does not conform to the required format, 'yyyy-MM-dd'.
这是一个问题,因为如果用户想要编辑一个条目,控件的日期永远不会被设置,因此用户将不知道先前/当前值是什么.
我通过阅读其他类似问题找到的解决方案是将模型中的DisplayFormat设置为yyyy-MM-dd,make适用于编辑控件:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime ReleaseDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为它在编辑期间自动填充HTML5日期选择器的值(使用@Html.EditorFor())
:
但是当我正在显示时(使用`@ Html.DisplayFor()),我会遇到丑陋的ISO格式日期:
我真正的问题是:我可以在模型中设置正常显示和编辑模式的不同显示格式吗?
@Html.DisplayFor
用于显示和@Html.EditorFor
编辑)我希望一切都有道理 - 我是asp.net的新手,所以不完全熟悉这些控件和属性.
我想要实现的是这样的:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] // use this format for edit controls
[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = false)] // use this format for display controls
public DateTime ReleaseDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是一个属性不能有两个显示格式属性.
Bac*_*cks 11
对方法TextBoxFor使用format参数并覆盖type属性:
@Html.TextBoxFor(m => m.ReleaseDate, "{0:yyyy-MM-dd}", htmlAttributes: new { @type="date" })
Run Code Online (Sandbox Code Playgroud)