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; }
}

任何想法为什么来到控制器的对象的属性具有空值?用提琴手检查,它似乎传递了正确的值。

谢谢!

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 回答