何时以及如何使用Html5DateRenderingMode

时间:2015-08-12 13:22:32

标签: asp.net-mvc-5.2

据我所知,Html5DateRenderingMode用于显示与日期/时间相关的值,可以设置为 -

12345

我尝试在View(.cshtml)中声明。与EditorFor一起使用时 -

@{ Html.Html5DateRenderingMode = Html5DateRenderingMode.Rfc3339; }
@{ Html.Html5DateRenderingMode = Html5DateRenderingMode.CurrentCulture; }

根据声明的RenderingMode显示日期。

问题 -
- 我们是否总是在View(.cshtml)中设置日期渲染模式,或者我们也可以在ViewModel中声明它。如果是,怎么样?
- 设置Html5DateRenderingMode的实际用法是什么? (如果使用ApplyFormatInEditMode和DataFormatString注释可以实现相同的思考)

谢谢!

1 个答案:

答案 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时的设置与此设置相同。