asp.net-mvc-5.2 - 何时以及如何使用 Html5DateRenderingMode

标签 asp.net-mvc-5.2

据我了解,Html5DateRenderingMode 用于显示日期/时间相关值,可以设置为 -

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

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

@Html.EditorFor(emp => emp.StartDate, new { htmlAttributes = new { @class = "form-control" } })

它根据声明的RenderingMode显示日期。

问题 -
- 我们是否总是在 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,
    }
}

处理与日期/时间相关的 HTML5 输入类型时,输入的必须设置为 ISO、“Rfc339”格式或内置格式浏览器控件将无法正确解释日期/时间。这仅适用于使用支持这些类型并提供日历/时间控件以允许您以结构化方式选择或输入日期时间信息的现代浏览器。

这个枚举实际上只是一个开/关开关,而不是两个单独的选择,并且最有可能的存在是为了根据您的目标受众提供一定的灵活性。如果您实际上想要只是一个标准文本输入,或者您只关注桌面,遗憾的是,迄今为止,浏览器支持仍然很差,那么您可能希望输入值对用户更加“友好”用户当前的文化,即 08/12/20152015-08-12。但是,如果您想依赖现有的浏览器控件(如果有),在必要时使用 polyfill,或者专注于普遍支持的移动设备,那么您希望以正确的 ISO 格式输出值。

老实说,我以前从未愚弄过这个设置,也从来没有真正需要这样做。

DataFormatString 属性及其 ApplyFormatInEditMode 参数而言,是的,您几乎可以使用它来实现相同的目标。它有点宽松,您可以使用任何格式,但如果您在编辑模式下应用 ISO 格式,那么您将执行与设置为 Html5DateRenderingMode.Rfc3339 时此设置相同的操作.

关于asp.net-mvc-5.2 - 何时以及如何使用 Html5DateRenderingMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31966505/

相关文章:

c# - App_Web_***.dll 发生类型为 'System.NullReferenceException' 的异常

asp.net-mvc - 如何在 ASP.NET-MVC 5.2 中对文本输入字段使用 HTML5 原生验证规则?

c# - 无法删除用户外部登录

oracle - Entity Framework 和字符串作为 Oracle Db 上的 NCLOB

c# - 如何使用owin和Mvc 5从httpcontext获取访问 token

c# - MVC 路由匹配无效的路由

asp.net-mvc - Serilog 仅在非异步操作时写入接收器,即使如此,也仅在首次运行时写入接收器

asp.net-mvc - AccountController.SendCode 和VerifyCode 的作用是什么?

c# - 枚举和文本框组合的 MVC5 部分或编辑器模板?