【问题标题】:ModelState.isValid = false on production machine, true on development machineModelState.isValid = 生产机器上的假,开发机器上的真
【发布时间】:2013-08-15 17:09:54
【问题描述】:

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

接下来我使用 ModelState.Values.SelectMany(v => v.Errors) 从 ModelState 中获取错误并将它们放入 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?这是加拿大的方式..

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

【问题讨论】:

    标签: jquery asp.net-mvc-3 iis modelstate jquery-jtable


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 2020-11-16
      • 2019-03-24
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多