gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:09:19 25 4
gpt4 key购买 nike

我刚刚遇到了一个非常有趣的问题。如果我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com