我创建了一个使用引导日期选择器的表单,允许用户输入日期,并且在我的localhost上测试时使用的方法非常有效。当我上传网站进行最终测试时会出现问题,该测试会将我的网站中的日期格式从dd / MM / yyyy切换到dd-MM-yyyy,即使我已使用global.asax文化设置转换日期。这个日期格式不会是这样的问题,但我的表单不再提交,我得到的错误说“序列不包含任何元素”我检查了服务器和站点中的所有设置,可能导致这个但似乎无法解决问题。提前感谢任何建议。
将日期转换为前端的指定格式:
.GetValueOrDefault().ToString("dd/MM/yyyy")
Global.asax代码:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
CultureInfo newCulture = new CultureInfo("en-ZA");
newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
newCulture.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = newCulture;
}
控制器代码:
_vehicle[c] = new Vehicle()
{
inceptionDate = string.IsNullOrEmpty(frm["inception_" + c]) ?
(IsFleetClient ? DateTime.Now.Date.AddDays(1) : DateTime.Now.Date) :
Convert.ToDateTime(frm["inception_" + c]).ToLocalTime()
};
答案 0 :(得分:0)
我并不精通ASP.NET,但在应用启动时在当前线程上设置文化似乎并不正确 - IIS是多线程的,因此可能不是处理的线程你以后的要求。
尝试在Web.Config
文件中全局设置文化,如下所示:
https://stackoverflow.com/a/7216126/1138552
编辑:
此外,en-ZA
ShortDatePattern
yyyy/MM/dd
似乎dd/MM/yyyy
而非(New-Object CultureInfo "en-ZA").DateTimeFormat.ShortDatePattern
。这可以在PowerShell中测试:
yyyy/MM/dd
输出(在我的机器上):
dd/MM/yyyy
如果您想将其更改为ShortDatePattern
,请尝试在Application_PreRequestHandlerExecute
中设置文化和{{1}}。