ASP.NET MVC 日期字符串斜杠在 Safari 输入字段中被转换为破折号
ASP.NET MVC date string slash being converted to dash in Safari input fields
我正在将 DateTime 输出到文本输入字段 MM/dd/yyyy 的字符串格式。这适用于所有浏览器,除了最新版本的 Safari(在 Yosemite,如果重要的话)。请参阅以下示例:
此代码:
<div><input type="text" value='@Model.Arrival.Value.ToString("MM/dd/yyyy")' /></div>
<div><input type="text" value="@Html.Raw(Model.ArrivalDateString)" /></div>
<div><input type="text" value="8/23/2015" /></div>
<div><input type="text" value="08/23/2015" /></div>
产生这个:
我为此设置的测试页上绝对没有其他内容 运行。它只是一个简单的 HTML 页面,其中包含来自视图模型的服务器端输出。 MVC 5 和 .net 框架 4.5.1
查看页面源码,在Safari中是这样的:
<input type="text" value="08-20-2015" />
在其他浏览器上是这样的:
<input type="text" value="08/20/2015" />
- 更新:看起来 .NET 正在为 Safari 浏览器选择不同的区域性/格式。一种可能的解决方法是指定格式提供程序。
我能够通过为字符串格式指定区域性来解决问题。即:
DateTime arrival = DateTime.Now;
CultureInfo invariant = CultureInfo.InvariantCulture;
string dateString = arrival.ToString("MM/dd/yyyy", invariant);
en-US 也适用。仍然不确定为什么会这样。看起来 ASP.NET 正在根据用户代理做一些不同的事情。请求 headers 在其他方面看起来是一样的。
如果我能够让 browserstack 在本地工作,我早就想通了。
我正在将 DateTime 输出到文本输入字段 MM/dd/yyyy 的字符串格式。这适用于所有浏览器,除了最新版本的 Safari(在 Yosemite,如果重要的话)。请参阅以下示例:
此代码:
<div><input type="text" value='@Model.Arrival.Value.ToString("MM/dd/yyyy")' /></div>
<div><input type="text" value="@Html.Raw(Model.ArrivalDateString)" /></div>
<div><input type="text" value="8/23/2015" /></div>
<div><input type="text" value="08/23/2015" /></div>
产生这个:
我为此设置的测试页上绝对没有其他内容 运行。它只是一个简单的 HTML 页面,其中包含来自视图模型的服务器端输出。 MVC 5 和 .net 框架 4.5.1
查看页面源码,在Safari中是这样的:
<input type="text" value="08-20-2015" />
在其他浏览器上是这样的:
<input type="text" value="08/20/2015" />
- 更新:看起来 .NET 正在为 Safari 浏览器选择不同的区域性/格式。一种可能的解决方法是指定格式提供程序。
我能够通过为字符串格式指定区域性来解决问题。即:
DateTime arrival = DateTime.Now;
CultureInfo invariant = CultureInfo.InvariantCulture;
string dateString = arrival.ToString("MM/dd/yyyy", invariant);
en-US 也适用。仍然不确定为什么会这样。看起来 ASP.NET 正在根据用户代理做一些不同的事情。请求 headers 在其他方面看起来是一样的。
如果我能够让 browserstack 在本地工作,我早就想通了。