据我所知,Html5DateRenderingMode用于显示与日期/时间相关的值,可以设置为 -
12345
我尝试在View(.cshtml)中声明。与EditorFor一起使用时 -
@{ Html.Html5DateRenderingMode = Html5DateRenderingMode.Rfc3339; }
@{ Html.Html5DateRenderingMode = Html5DateRenderingMode.CurrentCulture; }
根据声明的RenderingMode显示日期。
问题 -
- 我们是否总是在View(.cshtml)中设置日期渲染模式,或者我们也可以在ViewModel中声明它。如果是,怎么样?
- 设置Html5DateRenderingMode的实际用法是什么?
(如果使用ApplyFormatInEditMode和DataFormatString注释可以实现相同的思考)
谢谢!
答案 0 :(得分:1)
有关此特定属性的文档非常稀疏。关于其目的的最佳描述可以在源代码中找到:
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace System.Web.Mvc
{
/// <summary>
/// Controls the value-rendering method For HTML5 input elements of types such as date, time, datetime and datetime-local.
/// </summary>
public enum Html5DateRenderingMode
{
/// <summary>
/// Render date and time values according to the current culture's ToString behavior.
/// </summary>
CurrentCulture = 0,
/// <summary>
/// Render date and time values as Rfc3339 compliant strings to support HTML5 date and time types of input elements.
/// </summary>
Rfc3339,
}
}
在处理与日期/时间相关的HTML5输入类型时,输入的value
必须设置为ISO或“Rfc339”格式,或内置浏览器控件将无法正确解释日期/时间。这仅适用于使用支持这些类型的现代浏览器并提供日历/时间控件,以允许您以结构化方式选择或以其他方式输入日期时间信息。
这个枚举实际上只是一个开/关切换,而不是两个单独的选择,并且很可能存在允许一定的灵活性,具体取决于您的目标受众。如果您实际上想要只是一个标准的文本输入,或者您只专注于桌面,那么浏览器支持到目前为止仍然可悲,那么您可能希望输入值更加“友好”到用户是他们当前的文化,即08/12/2015
vs 2015-08-12
。但是,如果您想依赖于存在的浏览器控件(如果有),在必要时使用polyfill,或者专注于支持通用的移动设备,那么您希望以适当的ISO格式输出值。
老实说,我以前从未愚弄过这个设置,从来没有真正需要。
就DataFormatString
属性及其ApplyFormatInEditMode
参数而言,是的,您可以使用它实现相同的功能。您可以使用任何格式,但是如果您在编辑模式下应用ISO格式,那么您设置为Html5DateRenderingMode.Rfc3339
时的设置与此设置相同。