**更新
Firefoxを使用しない限り、投稿中に日付がデータバインドされていないことに気づきました。
ブラウザがサーバー側のデータバインディングに影響を与えるのはなぜですか?
クレイジーな薬を飲んでいるような気がします
私の問題は、正しい方法(mm / dd / yyyy)でフォーマットされているように見えるJQuery日付ピッカーがありますが、値がサーバーに送信されると、月と日が入れ替わるということです。
日付プロパティは次のようにページに追加されます(投稿中にバインドできるように非表示になっています。単純なテキストボックスの場合も問題は同じです)。
<input type="hidden" name="SearchByDate" id="SearchByDate" value="<%: ((DateTime)Model.SearchByDate).ToString(Web.Common.Config.GetDateFormatBase) %>" />
私のビューモデルでは、次のように日付形式を指定します。
[DisplayFormat(DataFormatString = Common.Config.GetDateFormat,
ApplyFormatInEditMode = true)]
public DateTime? SearchByDate { get; set; }
私のjavascriptdatepickerは次のようにフォーマットされています:
$("#appointmentDateDiv").datepicker({
------> dateFormat: "<%= Web.Common.Config.GetDateFormatJavascript %>",
changeMonth: true,
onSelect: function (dateText, inst) {
$("#SearchByDate").val(dateText);
$("form").submit();
}
});
私は実際に次のような一般的なクラスのフォーマットを分離します:
public const string GetDateFormatBase = @"MM/dd/yyyy";
public const string GetDateFormat = @"{0:" + GetDateFormatBase + "}"; //This is for annotations
public const string GetDateFormatJavascript = "mm/dd/yy";
ご覧のとおり、形式はすべてsam:monthdayyearです。このようなページを最初に読み込んだときはすべてが良さそうなので、日付ピッカーを使用すると、適切な形式で日付を選択できます。次に投稿しますが、コードをステップスルーしても、すべてが正常に見えます。ビューに戻る前に、日付を再フォーマットして確認します。しかし、月と日は常に入れ替わります。
ただし、最も奇妙なことは、Firefoxではすべてが正常に機能することです。IE、Chrome、Operaでは失敗します。でも理由がわからない…