5

パラメータの1つをとるMVCアクションがあり、DateTime「17/07/2012」を渡すと、パラメータがnullであるが、null値を持つことはできないという例外がスローされますが、渡す01/07/2012と、として解析されJan 07 2012ます。

日付をフォーマットでajax呼び出しに渡しますが、カルチャが構成されているにもかかわらず、フォーマットDD/MM/YYYYに依存する必要がありますか?MM/DD/YYYYweb.config

これは単純な方法であり、この1つの日付パラメーターのみがあります。

4

2 に答える 2

8

Asp.NET-MVC で日付パラメーターを送信するための 3 つの安全なオプションがあります。

  • YYYY/MM/DD国際日付の ISO 標準であるため、送信してください。
  • POSTリクエストの代わりにリクエストを使用してくださいGET

  • Model Binderデフォルトの日付のバインド方法を変更する場合:

IModelBinder を使用して、ユーザー カルチャを使用するように既定のモデル バインダーを変更できます。

public class DateTimeBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        var date = value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);

        return date;    
    }
}

そして、Global.Asax に次のように記述します。

ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());

Mvc フレームワーク チームがすべてのユーザーに既定のカルチャを実装した理由については、この優れたブログを参照してください。

于 2012-05-09T16:02:49.087 に答える
1

日付をクエリ文字列として渡す場合、gdoron の回答は正しいです。ただし、それらがフォーム値として渡される場合 (ポスト値) は、正しいカルチャを使用する必要があります (カルチャが構成されたプロパティであると仮定します)。

于 2012-05-09T16:13:42.760 に答える