1

我們使用JQuery UI Datepicker。從Jquery datepicker到MVC問題的日期時間綁定

當我以這種格式輸入日期:2012年9月22日asp.net MVC說它不是一個有效的格式。

當我查看通過綁定填充的viewmodel時,它說datefield:NULL

當我在看的要求,我認爲這是張貼值:9%2f22%2f2012

在我設置文化這樣

  CultureInfo culture = new CultureInfo(language.LanguageISO); 
      Thread.CurrentThread.CurrentCulture = culture; 
      Thread.CurrentThread.CurrentUICulture = culture; 

其中language.LanguageISO,在這種情況下,protected override void OnActionExecuting(ActionExecutingContext filterContext))

en'

我認爲模型活頁夾會提取文化?

這是否是一個問題,日期中的斜線轉義爲%2f

回答

3

太晚設置文化在OnActionExecuting事件。模型聯編程序已經在這個階段運行。您需要在模型聯編程序運行之前進行更早的設置。例如,你可以實現IAuthorizationFilter接口:

public class SomeCustomAttribute : ActionFilterAttribute, IAuthorizationFilter 
{ 
    public void OnAuthorization(AuthorizationContext filterContext) 
    { 
     // TODO: set the culture here so that it's picked up by the model binder 

     CultureInfo culture = new CultureInfo(language.LanguageISO); 
     Thread.CurrentThread.CurrentCulture = culture; 
     Thread.CurrentThread.CurrentUICulture = culture; 
    } 
} 
+0

嘿達林,你嚇唬我,你知道的實在太多,這確實做的伎倆! – Michel

+0

Darin - DateTime Guru! –

0

嘗試配置日期選擇像

$('.has_datepicker').datepicker({ 

     dateFormat: '@System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.Replace("M", "m").Replace("yy", "y")' 
0
Follow the step: 
1. @Html.TextBox("date", Model.ToString("dd/MM/yyyy"), new { @class = "date" }) 

2. 
/// <reference path="jquery-1.4.4.js" /> 
/// <reference path="jquery-ui.js" /> 
$(document).ready(function() { 
    $('.date').datepicker({dateFormat: "dd/mm/yy"}); 
});