1

JQueryUIDatepickerを使用します。

この形式で日付を入力すると:2012年9月22日asp.net MVCは、有効な形式ではないと言っています。

バインディングを介して入力されたビューモデルを見ると、日付フィールドについて次のように表示されますNULL

リクエストを見ると、これは投稿された値として表示されます。9%2f22%2f2012

protected override void OnActionExecuting(ActionExecutingContext filterContext))私はこのような文化を設定しました

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

ここlanguage.LanguageISOで、この場合、' en'

モデルバインダーが文化を引き継ぐと思いましたか?

日付のスラッシュが次のようにエスケープされるのは問題%2fでしょうか?

4

3 に答える 3

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; 
    }
}
于 2012-09-17T11:00:41.170 に答える
0

次のようにdatepickerを構成してみてください

$('.has_datepicker').datepicker({

       dateFormat: '@System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.Replace("M", "m").Replace("yy", "y")'
于 2012-09-17T10:58:38.173 に答える
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"});
});
于 2012-09-17T11:07:17.927 に答える