何时以及如何使用 Html5DateRenderingMode
When and how to use Html5DateRenderingMode
我了解到Html5DateRenderingMode是用来显示date/time相关值的,可以设置为-
@{ Html.Html5DateRenderingMode = Html5DateRenderingMode.Rfc3339; }
@{ Html.Html5DateRenderingMode = Html5DateRenderingMode.CurrentCulture; }
我曾尝试在 View(.cshtml) 中声明。当作为 -
与 EditorFor 一起使用时
@Html.EditorFor(emp => emp.StartDate, new { htmlAttributes = new { @class = "form-control" } })
根据声明的渲染模式显示日期
问题 -
- 我们是否总是在 View(.cshtml) 中设置日期呈现模式,或者我们是否也可以在 ViewModel 中声明它。如果是,如何?
- 设置 Html5DateRenderingMode 的实际用途是什么?
(考虑是否可以使用 ApplyFormatInEditMode 和 DataFormatString 注释来实现)
谢谢!
关于此特定 属性 的文档非常稀少。在来源中可以找到对其用途的最佳描述:
// 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,
}
}
在处理date/time相关的HTML5输入类型时,输入的value
必须设置为ISO,否则"Rfc339" 格式,否则内置浏览器控件将无法正确解释 date/time。这仅适用于使用支持这些类型的现代浏览器并提供 calendar/time 控件以允许您以结构化方式选择或输入日期时间信息的情况。
这个枚举实际上只是一个 on/off 开关,而不是两个单独的选择,它的存在很可能是为了根据您的目标受众提供一些灵活性。如果你真的 想要 只是一个标准的文本输入,或者你只专注于桌面,遗憾的是浏览器支持至今仍然少得可怜,那么你可能希望输入值更多 "friendly" 通过成为用户当前的文化,即 08/12/2015
与 2015-08-12
。但是,如果您想依赖现有的浏览器控件(如果有),在必要时使用 polyfill,或者专注于支持普遍的移动设备,那么您希望以正确的 ISO 格式输出值。
不过,老实说,我以前从来没有用过这个设置,也从来没有真正需要这样做。
就 DataFormatString
属性及其 ApplyFormatInEditMode
参数而言,是的,您几乎可以使用它实现相同的目的。它更宽松一些,因为您可以使用 any 格式,但是如果您在编辑模式下应用 ISO 格式,那么您所做的与设置为 [=16 时的设置相同=].
我了解到Html5DateRenderingMode是用来显示date/time相关值的,可以设置为-
@{ Html.Html5DateRenderingMode = Html5DateRenderingMode.Rfc3339; }
@{ Html.Html5DateRenderingMode = Html5DateRenderingMode.CurrentCulture; }
我曾尝试在 View(.cshtml) 中声明。当作为 -
与 EditorFor 一起使用时@Html.EditorFor(emp => emp.StartDate, new { htmlAttributes = new { @class = "form-control" } })
根据声明的渲染模式显示日期
问题 -
- 我们是否总是在 View(.cshtml) 中设置日期呈现模式,或者我们是否也可以在 ViewModel 中声明它。如果是,如何?
- 设置 Html5DateRenderingMode 的实际用途是什么?
(考虑是否可以使用 ApplyFormatInEditMode 和 DataFormatString 注释来实现)
谢谢!
关于此特定 属性 的文档非常稀少。在来源中可以找到对其用途的最佳描述:
// 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,
}
}
在处理date/time相关的HTML5输入类型时,输入的value
必须设置为ISO,否则"Rfc339" 格式,否则内置浏览器控件将无法正确解释 date/time。这仅适用于使用支持这些类型的现代浏览器并提供 calendar/time 控件以允许您以结构化方式选择或输入日期时间信息的情况。
这个枚举实际上只是一个 on/off 开关,而不是两个单独的选择,它的存在很可能是为了根据您的目标受众提供一些灵活性。如果你真的 想要 只是一个标准的文本输入,或者你只专注于桌面,遗憾的是浏览器支持至今仍然少得可怜,那么你可能希望输入值更多 "friendly" 通过成为用户当前的文化,即 08/12/2015
与 2015-08-12
。但是,如果您想依赖现有的浏览器控件(如果有),在必要时使用 polyfill,或者专注于支持普遍的移动设备,那么您希望以正确的 ISO 格式输出值。
不过,老实说,我以前从来没有用过这个设置,也从来没有真正需要这样做。
就 DataFormatString
属性及其 ApplyFormatInEditMode
参数而言,是的,您几乎可以使用它实现相同的目的。它更宽松一些,因为您可以使用 any 格式,但是如果您在编辑模式下应用 ISO 格式,那么您所做的与设置为 [=16 时的设置相同=].