0

我正在为我的 ASP.Net MVC 3 应用程序中的 CRUD 表使用 jQuery jTable 插件。在我的开发机器上运行代码工作正常。但是,当我将代码移动到生产服务器时,我无法将新事件/行添加到 jTable,因为我不断收到错误“表单无效!...”,该错误在控制器中由if(!ModelState.IsValid).

所以接下来我从 ModelState 中抓取错误ModelState.Values.SelectMany(v => v.Errors)并将它们放入 JSON 响应中,这就是我的 ModelState 无效的原因:"ErrorMessage=The value '15/08/2013 11:00:00' is not valid for Timestamp."

所以我的问题是,为什么该日期字符串对我的开发服务器可以,但对生产无效?

另外,无效的模型是由EF Database First创建的,所以我没有自己设置任何DataAnnotations。似乎默认的模型绑定器在我的生产系统上无法正常工作。

可能是因为我使用的是 DD/MM/YY 而不是 MM/DD/YY?这是加拿大的方式。。

编辑:啊哈!这是因为文化特定格式,我首先尝试通过将生产环境中的文化设置从美国切换到加拿大来修复它,但这仍然没有解决它。所以我做的下一件事是在我Web.configsystem.web部分内添加一行<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-CA" uiCulture="en-CA"/>,现在一切顺利。希望这对某人有帮助!

4

1 回答 1

0

正如我在编辑中提到的,我找到了问题的原因和解决方案。这是由参数的自动绑定引发的错误引起的,而在我的生产机器上出现日期问题的原因是由于该机器上的语言环境设置(dd/mm/yy vs mm/dd/yy) . 为了解决这个问题,我设置了计算机区域设置(在控制面板中),并在我的 Web.config 中添加了一行。

于 2013-08-20T00:21:05.510 回答