4

この VM を考えると

public class ApplicationDTO : BaseDTO
{
    public DateTime Date { get; set; }
    public int JobId {get;set;}
    public int Status {get;set;}
    [Required]
    public string Message { get; set; }
    public string ExpertCode { get; set; }
}

このように隠しフィールドがあります

@Html.Hidden("Date", DateTime.Now)

どのフィドラーが私に期待どおりにサーバーに送信されるかを示しています(英国の形式、私は英国にいます!)

ここに画像の説明を入力

しかし、コントローラーでは、日付はデフォルトの分として表示されます。日にち

ここに画像の説明を入力

それは英国の形式だけですか?もしそうなら、それを回避する最善の方法は何ですか? 現在、現在の日付に設定していますが、任意の日付に設定できる可能性があります。

@Html.HiddenFor(x => x.Date)

それが違いを生む場合、私はAJAXを使用してフォームを送信しています。

4

4 に答える 4

6

Get MVC の場合、モデル バインド時に既定でカルチャ インバリアント形式 (基本的には US 形式) を使用します。したがって、英国の日付形式は受け入れられません。設計上の理由は、クエリ文字列を渡すことができるため、カルチャ不変である必要があるためだと思います (そのロジックに 100% 納得していませんでした)。

この記事では、考えられる解決策について説明しますhttp://xhalent.wordpress.com/2011/05/14/localization-of-dates-in-asp-net-mvc/

英国の日付形式で Get を実行しないようにするだけです

この質問では、 DateTime および ASP.NET MVC 3 モデル バインディングに関する問題のグローバリゼーションの問題もカバーしています。

于 2013-02-28T23:23:00.013 に答える
1

モデルまたはビューモデルの日付をフォーマットするには、データ注釈を使用する必要があります

public class ApplicationDTO : BaseDTO
{
   [DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)]
   public DateTime Date { get; set; }
   public int JobId {get;set;}
   public int Status {get;set;}
   [Required]
   public string Message { get; set; }
   public string ExpertCode { get; set; }
}

必要に応じてフォーマットを適用します。私が見たように、あなたはあなたの財産にフォーマットを提供していません

于 2013-02-28T23:13:43.960 に答える
0

@Html.Hidden (For ヘルパーではない) を使用すると、リクエストのパラメーターをモデルのプロパティに一致させることができません。

@Html.HiddenFor(x=>x.Date, "28/2/2013") を使用すると、適切に入力された日付が表示されます。

Request.Params コレクションも確認できます。アクションにブレークポイントを置きます。Params の 1 つに日付が含まれていることがわかります.... JQuery はこれにまったく影響しません。

于 2013-02-28T23:23:12.653 に答える
0

dd.MM.yyyy 形式で同様の問題が発生し、web.config のグローバリゼーション要素を適切なカルチャおよび uiCulture 属性設定に設定する必要がありました。

于 2013-02-28T23:16:37.233 に答える