TextBox对其默认的DateTime值格式进行不需要的修改

时间:2013-04-19 14:35:45

标签: .net asp.net-mvc

我目前正在使用ASP.NET MVC 4开发Web应用程序。以下是我所面临的问题的描述:

我创建了一个强类型视图,以便编辑表格的某些字段,特别是DateTime字段。我想要做的是使用以下代码显示一个文本框,其中包含从数据库中检索到的默认值:

@Html.TextBoxFor(m => m.Date, new { @Value = ViewBag.DefaultValue })

使用简单查询在Controller中设置ViewBag.DefaultValue。由于我在谈论日期,我也在我的web.config中添加了这个:

<globalization uiCulture="fr-Fr" culture="fr-FR" />

现在有趣的部分是,当显示时,日期具有MM / DD / YYYY格式而不是DD / MM / YYYY格式,这是保存在数据库中的格式。此外,当我只想在div中显示ViewBag.DefaultValue时,它会显示正确的格式,即DD / MM / YYYY。

有没有人遇到过类似的问题?我可以理解我的描述可能相当模糊,但我真的不明白那里发生了什么。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我尝试过,但没有任何成功。

经过一段时间的检查,我终于在那里找到了一个解决方案:http://geekswithblogs.net/80n/archive/2012/04/27/apply-a-datetime-format-in-an-asp.net-mvc-textboxfor.aspx

使用EditorFor和数据注释无法正常工作,因为我需要将此标记链接到datepicker事件。所以我使用了第二种解决方案。

技巧包括在传递值时强制格式: @Html.TextBoxFor( m => m.Date, new {@Value = Model.Date.ToString("dd/MM/yyyy")}

希望这可以提供帮助。

答案 1 :(得分:0)

我在global.asax.cs中使用类似的东西:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-us");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-us");
}

以防止功能未使用正确的设置。