【问题标题】:Validation problem with Windows Azure, EF and MVC3Windows Azure、EF 和 MVC3 的验证问题
【发布时间】:2011-08-20 17:06:46
【问题描述】:

我遇到了一个验证错误问题,该错误仅出现在 Windows Azure 上,而没有出现在本地 Azure 模拟器上。

在我的模型中,我有一个类,其属性为“Start”,并且具有德语日期格式的 DisplayFormat:

[Required]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Beginn")]
public DateTime Start { get; set; }

在我的本地机器上,一切都很好,但是当我尝试将字段保存在 Windows Azure 实例上时,我收到了以下验证消息:

值“22.08.2011”对 Beginn 无效。

两者(本地和云)都使用相同的数据库 (Azure SQL)。 所以,我很困惑。知道如何解决这个问题吗?

【问题讨论】:

    标签: c# entity-framework asp.net-mvc-3 azure


    【解决方案1】:

    DisplayFormat 属性(顾名思义)仅用于使用指定格式显示属性值。它与验证完全无关。

    在这种情况下,默认模型绑定器在尝试将 POSTed 字符串设置为 DateTime 属性时执行验证。它使用可以在 web.config 中使用 global 元素指定的默认语言环境:

    <system.web>
        ...
        <globalization culture="de-DE" uiCulture="de-DE"/>
    </system.web>
    

    您的代码在 Azure 实例上部署时不起作用的原因是服务器配置为使用日期时间格式不同的 en-US 文化。

    如果您想使用一些更具体的格式,您还可以为您的视图模型编写自定义模型绑定器,并在内部使用这种特殊的自定义格式手动解析 POST 值。

    【讨论】:

      猜你喜欢
      • 2011-08-26
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多