настройка конфигурации языка программирования в приложении MVC3

#c# #asp.net-mvc-3 #iis-7.5

#c# #asp.net-mvc-3 #iis-7.5

Вопрос:

Я развернул приложение MVC3, которое хорошо работает в среде разработки, потому что формат даты на компьютере разработчика — это дд / мм / гггг. Но когда приложение было развернуто на сервере, на стороне сервера начали появляться ошибки из-за недопустимых дат, потому что на сервере формат даты — мм / дд / гггг. Теперь мой вопрос в том, нужно ли мне настраивать сервер?? или только IIS 7.0 для этого конкретного языка ??. Каким бы ни был ответ, пожалуйста, дайте мне знать, как я могу это сделать. Я работаю в Windows Server 2008 R2 и iis 7.5

Комментарии:

1. Откуда берутся даты? Как правило, вам вообще не следует использовать культуру системы при разработке веб-приложения — в конце концов, она может не совпадать с пользовательской.

2. Даты поступают из текстового ввода с помощью выбора даты в jquery, который создает формат на стороне клиента, также проверка формата на стороне клиента работает хорошо, проблема заключается в проверке на стороне сервера

3. Если входные данные получены от пользователя, вы, вероятно, должны использовать язык пользователя.

Ответ №1:

Самый простой способ убедиться, что всегда используется один и тот же язык программирования, — установить его в вашем базовом контроллере:

 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
{
}
  

Ответ №2:

Что вы могли бы сделать, чтобы не зависеть от языка программирования вашего кода:

  1. Щелкните правой кнопкой мыши на вашем проекте и перейдите к свойствам -> анализ кода. Включите правила глобализации Microsoft и проанализируйте свой код.

  2. Он будет выдавать вам предупреждения везде, где вы использовали DateTime и не указали культуру. Для тех, которые должны иметь независимый формат, добавьте CultureInfo.InvariantCulture