2011-11-08 27 views
0

我部署了一个在开发环境中运行良好的MVC3应用程序,这是因为开发机器中的日期格式为dd/mm/yyyy。但是当应用程序在服务器上部署时,服务器端因为无效的日期而开始出现错误,因为服务器中的日期格式为mm/dd/yyyy。现在我的问题是我需要配置服务器?或者只有IIS 7.0针对这种特定的文化?无论答案是什么,请让我知道我该怎么做。我在Windows Server 2008 R2的工作和IIS 7.5在MVC3应用程序中配置文化配置

+0

日期从哪里来?毕竟,在开发Web应用程序时,您一般不应该使用系统的文化*。毕竟,它可能与用户不一样。 –

+0

日期来自文本输入,使用jquery的日期选择器使客户端的格式,以及客户端格式的验证运行良好,在服务器端验证的问题 – Jorge

+0

如果输入来自用户,您应该使用用户的文化。 –

回答

2

最简单的方法,以确保相同的培养一直是采用的是将其设置在你的基地控制器:

public override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    Thread.CurrentThread.CurrentUICulture = 
     Thread.CurrentThread.CurrentCulture = new CultureInfo(1033); //en-us 
} 

但更坚实的方法是创建一个新的动作过滤器:

public class UseEnglishCultureAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     Thread.CurrentThread.CurrentUICulture = 
      Thread.CurrentThread.CurrentCulture = new CultureInfo(1033); //en-us 
    } 
} 

,标记自己的控制器,它:

[UseEnglishCulture] 
public class BaseController : Controller 
{ 
} 
0

你能做什么不能让你的代码依赖于文化:

  1. 右击你的项目,并转到属性 - >代码分析。打开Microsoft全球化规则,并分析您的代码。

  2. 它会给你警告,无论你使用DateTime,并没有指定文化。对于那些应该是一个独立的格式,添加CultureInfo.InvariantCulture