6

以下のデータをビューからコントローラーに渡そうとしています。

編集済み

<script type="text/javascript">
    var pathname = 'http://' + window.location.host;
  var Student = [
  { Name: "Vijay", ID: 1, DOB: "2010-12-09T08:00:00.000Z" },
  { Name: "Anand", ID: 2, DOB: "2010-12-09T08:00:00.000Z" }
  ];

  $.ajax({
    url: pathname + "/Home/UpadetStu",
    type: "POST",
    dataType: "json",
    data: JSON.stringify(Student),
    contentType: "application/json; charset=utf-8",
    success: function (result) { }, 
    failure: function (r, e, s) { alert(e); } 
  });

</script>



   [ObjectFilter(Param = "stuData", RootType = typeof(Stu[]))]
    public JsonResult UpadetStu(Stu[] stuData)
    {
        return this.Json(new { success = true });
    }

[DataContract]
public class Stu
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public int ID { get; set; }

    [DataMember]
    public DateTime? DOB { get; set; }

}

しかし、コントローラーで名前とID(DOBのデフォルトの日時)がnullになる場合、日時の受け渡しに問題があることがわかりました。ビューからコントローラーに日時を渡すためのより良い方法はありますか?構文解析が恋しいですか?

4

2 に答える 2

6

問題はThu Dec 9 13:30:00 UTC+0530 2010、C#で有効な日時オブジェクトに解析できないことです。あなたはそれを呼び出すだけでそれを試すことがDateTime.Parse("Thu Dec 9 13:30:00 UTC+0530 2010")できますそれは失敗します。

サーバーからその日付形式を返す代わりに、のようなISO8601形式を返す方がよいことをお勧めします2010-12-09T08:00:00.000Z

長い日時形式をjavascriptからISO8601に簡単に変換できます。

new Date("Thu Dec 9 13:30:00 UTC+0530 2010").toJSON();

JSON.NETライブラリを使用している場合は、日時をシリアル化する方法を簡単に制御できます。

アップデート:

<script type="text/javascript">

  var Student = [
  { Name: "Vijay", ID: 1, DOB: "2010-12-09T08:00:00.000Z" },
  { Name: "Anand", ID: 2, DOB: "2010-12-09T08:00:00.000Z" }
  ];

  $.ajax({
    url: "/Home/Index",
    type: "POST",
    dataType: "json",
    data: JSON.stringify(Student),
    contentType: "application/json; charset=utf-8",
    success: function (result) { }, 
    failure: function (r, e, s) { alert(e); } 
  });

</script>

[HttpPost]
public ActionResult Index(Student[] students)
{
  ...
}
于 2012-06-25T10:11:36.993 に答える
0

コントローラのstudentDataオブジェクトがnullの場合、JSON.stringify(Student)は、適切なJSONではないオブジェクト、またはStuオブジェクトに解析できないオブジェクトを生成しています。

JS Studentオブジェクトが正しいことを確認してから、JSON.stringifyを実行して生成したJSONを確認します

于 2012-06-25T10:00:41.313 に答える