1

javascript 配列を MVC3 コントローラーに渡す際に問題が発生しています。何が間違っているのかわかりませんが、このコードは標準の WCF サービスで動作します。

$(function () {
    $("button").click(function () {
        Poster();
    });
});

function Poster() {
    var data = [];
    data.push(new WidgetProperty("test1", "value1"));

    alert(data.length);

    $.post("Home/Test", {test : data});
}

function WidgetProperty(name, value) {
    this.Name = name;
    this.Value = value;
}

そしてコントローラーは

[HttpPost]
public ActionResult Test(WidgetProperty[] test)
{
    return View("About");
}


public class WidgetProperty
{
    public string Name { get; set; }
    public string Value { get; set; }
}

コントローラーに渡されるオブジェクトのプロパティに null 値がある理由はありますか? フィドラーで確認したところ、正しい値を渡しているようです。

ありがとう!

4

1 に答える 1

0

投稿する前に、データに対して JSON.stringify() を使用する必要があります。データ型が JSON であることがわかっているため、投稿するデータが JSON であることを指定することをお勧めします。

$.post("Home/Test", {test : JSON.stringify(data) }, "json");

ライブデモ

編集

私はこれをもう少し調査しましたがcontentType: "application/json"、これを mvc3 で機能させるには、以下を含める必要があるようです:

$.ajax({
     type: "POST",
     url: "Home/Test",
     data: JSON.stringify(data),
     success: function(data){},
     dataType: "json",
     contentType: "application/json"
 });
于 2012-06-14T20:14:27.280 に答える