asp.net-mvc - 为什么在 Html Helper 中使用 ASP NET MVC 中的日期格式不同?

标签 asp.net-mvc datetime-format

我刚刚遇到了一个非常有趣的问题。如果我使用 ViewData 将 DateTime 值传递给 View ,然后将其显示在文本框中,即使我以完全相同的方式使用 String.Format,在使用 Html.TextBox 帮助器时也会得到不同的格式化结果。

<%= Html.TextBox("datefilter", String.Format("{0:d}", ViewData["datefilter"]))%>
<input id="test" name="test" type="text" value="<%: String.Format("{0:d}", ViewData["datefilter"]) %>" />

以上代码呈现如下html:

<input id="datefilter" name="datefilter" type="text" value="2010-06-18" />
<input id="test" name="test" type="text" value="18/06/2010" />

请注意使用 Html 帮助程序的第一行如何以一种方式生成日期格式,而第二行如何生成非常不同的输出。任何想法为什么?

注意:我目前在巴西,所以这里的标准短日期格式是 dd/MM/yyyy。

最佳答案

发生这种情况的原因是因为 TextBox 助手使用存储在 ViewData["datefilter"] 中的值,因为它的名称是 datefilter 并且完全忽略了您的第二个参数传递应该格式化日期。尝试更改文本框的名称。

更好的解决方案是使用编辑器模板和强类型 View 而不是 ViewData。这是一个例子。

型号:

public class MyModel
{
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", 
                   ApplyFormatInEditMode = true)]
    public DateTime Date { get; set; }
}

Controller :

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyModel
        {
            Date = DateTime.Now
        };
        return View(model);
    }
}

查看:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SomeNs.Models.MyModel>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <%: Html.EditorFor(x => x.Date) %>
</asp:Content>

关于asp.net-mvc - 为什么在 Html Helper 中使用 ASP NET MVC 中的日期格式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067287/

相关文章:

asp.net-mvc - 如何将带有附加数据属性的自定义异常记录到 Elmah?

c# - jQuery 的 ajax 不能在 IE6 上工作 :(

java - 使用 ZonedDateTime 解析日期时出现 DateTimeParseException

python - 什么是 Vaex 函数将字符串解析为 datetime64,相当于 pandas to_datetime,允许自定义格式?

javascript - JSON 日期时间的 TryParseExact 格式化程序是什么?

c# - 如何从接受参数的 Controller 返回不同的 ActionResult?

asp.net-mvc - ASP.NET MVC View 中允许多少逻辑?

c# - 如果文件存在于 asp.net mvc 中,则返回链接

java - 如何使用时间 API 检查字符串是否与日期模式匹配?

java - 如何在java 8和spring 4中显示时间取决于时区?