【问题标题】:Date Culture issues in remote machine远程机器中的日期文化问题
【发布时间】:2011-10-09 00:03:04
【问题描述】:

我在西班牙机器上编写一个 ASP.NET MVC 应用程序,所以我的日期是 (dd/mm/yyyy)。

但是我的远程 vps 使用的是 en-US W2k8,所以当我在那台机器上创建一个日期时,它将是 (mm/dd/yyyy)

我不确定解决这个问题的正确方法是什么。

我有一个注册表单,它采用类型为 (dd/mm/yyyy) 的字符串并将其发送到控制器。我猜模型活页夹会创建一个新的 DateTime,它将被发送到控制器,因为如果我(在远程)插入 31/10/2011 之类的东西,它会说日期不正确,所以当模型活页夹尝试创建日期时间它哭了。

所以我需要一种方法来指定(我想这将是全球性的)我所有的日期都是 dd/mm/yyyy。因此,当模型绑定器创建新日期时,它将使用该格式。

我该怎么做?我认为这对未来会有问题,因为我也想将我的应用本地化为英语,而英语用户将使用 mm/dd/yyyy。

【问题讨论】:

    标签: c# asp.net-mvc datetime cultureinfo


    【解决方案1】:

    我对 MVC3 并没有任何经验,但从高层次上讲,您的问题非常简单。 在将请求绑定到模型对象之前,您当前的线程文化需要与客户端的文化相匹配。有不同的方法可以做到这一点,但最明显的是:

    1) 将应用程序拆分为顶级文化子文件夹。 IE。将您的 /my_url/ 转换为 /en/my_url/、/sp/my_url/ 等。将 Web.config 放入每个具有相关文化设置的文件中。 这可能比您愿意投入更多的工作。

    2) 使用表单数据发布文化信息并在绑定之前拦截它。我确信在执行控制器操作之前可以处理某种事件。你可以扔一个 1-liner 来根据 post 参数设置当前的线程文化。

    可能有一种方法可以根据请求映射将这两者结合起来。类似于 /{language}/my_url/ 的内容。就像我说的那样,我并没有真正使用 MVC 设计模式的 MS 版本,不足以了解它的技术细节。

    【讨论】:

      【解决方案2】:

      您可以在网络配置文件中指定文化

      【讨论】:

        猜你喜欢
        • 2012-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多