2014-01-21 3 views
0

У меня возникла проблема при работе с datetime в asp.net. При отправке строки даты и времени из текстового поля в DateTime в соответствии с турецкой культурой формат datetime ломается.Asp.net datetime culture issue

Например, Я отправляю эти параметры на querystring -

? beginDate=02.01.2014&endDate=03.01.2014, эти значения параметров выглядят следующим образом, когда передается параметр ActionResult -

beginDate = 01.02.2014, endDate = 03.01.2014.

Я попробовал пару решений, но проблемы все еще существуют.

1)

protected void Application_Start() 
{ 
    System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("tr-TR"); 
    System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("tr-TR"); 

}

2)

<globalization uiCulture="tr-TR" culture="tr-TR" /> 

3)

return Json(_db.GetList(Convert.ToDateTime(begin, new CultureInfo("tr-TR")), Convert.ToDateTime(end, new CultureInfo("tr-TR"))) 

4)

begin.Value.ToString("dd.mm.yyyy") 
end.Value.ToString("dd.mm.yyyy") 

Url

domain.com/Home/GetList?begin=02.01.2014&end=03.01.2014 

GetList Метод

public JsonResult GetList(DateTime? begin, DateTime? end) 
{ 
    return Json(_db.GetList(Convert.ToDateTime(begin, new CultureInfo("tr-TR")), Convert.ToDateTime(end, new CultureInfo("tr-TR"))) 
} 
+0

, пожалуйста, покажите код, в котором вы преобразуете эти параметры запроса в datetime. – NoviceProgrammer

+0

Параметры привязки параметров запроса непосредственно –

ответ

0

модель по умолчанию связующего культуры агностик для параметров GET. Это означает, что вы всегда должны использовать yyyy-MM-dd следующий формат при отправке даты в качестве параметров строки запроса в действие контроллера:

?beginDate=2014-01-02&endDate=2014-01-03 

культура вступает в игру, если вы посылали эти даты в полезной нагрузке запроса POST ,

И есть причина, лежащая в основе этой детали реализации. Вы можете прочитать об этом в следующей статье: http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx

Это, как сказал, что вы могли бы избавиться от всех 1., 2., 3., 4., 5. очков вы пробовали и просто использовать begin и end Параметры DateTime. Вам не нужно настраивать информацию о культуре вашего приложения.