2


0

ASP.NET MVCモデルバインダーがISO DateTimeを正しく解析しない

私はコントローラーにフォームを投稿しようとしています:

Id=0&ReportDate=2010-08-09T00%3A00%3A00&SampleText=Save

送信されるのはXHR投稿です。コントローラーはReportDate以外のすべてのプロパティを取得し、代わりに.NETエポックのDateTimeに設定します。 何か案は?

編集:別の変数「ReportDateString」を設定し、文字列をコントローラーに送信して「DateTime.Parse()」を実行すると、正常に機能します。 ただし、DateTimeを直接バインドできるようにしたいのは、これがハックだと感じるからです。

編集2:これは私のコントローラコードです:

public void CreateTest(MyObject myObject) {
    myObjectRepository.Update(rootObject);
}

そして私のオブジェクト:

public class MyObject {
    public int Id { get; set; }
    public string SampleText{ get; set; }
    public DateTime ReportDate { get; set; }
}

デバッグを設定すると、モデルバインダーが、エポック日付に設定するDateTimeを除く、投稿のすべてのプロパティを正常にバインドすることがわかります。

編集3:フォーム:

Save

Javascript:

$('#saveButton')live('click', function(e) {
 $.post('CreateTest', $('#testform').serialize())
});

2 Answer


1


これは私にとってはうまくいきます:

 public void Test2(DateTime ReportDate, string SampleText, int Id)

URLで:

/Home/Test2?Id=0&ReportDate=2010-08-09T00:00:00&SampleText=Save

ReportDateは、コードを中断すると\ {09.08.2010 00:00:00}になります…​

編集-追加コード:

<% using (Html.BeginForm())
   { %>
    <%= Html.Hidden("ReportDate", "2010-08-09T00:00:00") %>
    <%= Html.TextBox("SampleText", "Save") %>
    <%= Html.TextBox("Id", "1") %>

<%} %>

また、同じ結果で以下を試しました:

    <%= Html.Hidden("ReportDate", "2010-08-09T00:00:00") %>
    <%= Html.TextBox("SampleText", "Save") %>
    <%= Html.TextBox("Id", "1") %>
    Submit!



    $("#submitform").click(function () {
        $.post("/Home/Test2", $("#testForm").serialize());
    });

この:

[HttpPost]
public ActionResult Test2(MyObject myObject) {
    return View();
}

MyObjectは、元の質問からのコピー/貼り付けです。


0


それはそのトリックではありません、あなたはあなたのウェブ設定に文化的な設定を追加する必要があります。 これであなたの問題は解決するはずです。 私の場合はTRです、あなたはあなたを追加してみることができます

    ****