不要将JSON数组发布到mvc控制器

时间:2016-02-06 18:44:19

标签: json asp.net-mvc

我试图通过AJAX将JSON发布到mvc控制器。我使用此代码,但它没有发布。

$(document).ready(function(){
    $(".btn-success").click(function(e){
        var urData = { City: 'Moscow', Age: 25 };
        $.ajax({
            url: "/Category/Create/",  
            type: "POST",
            dataType: "json",
            traditional: true,
            contentType : "application/json",
            data: urData,
            success: function(maindta) {
                alert(maindta);
            },
            error: function(jqXHR, textStatus){
            }
        });
        e.preventDefault(); //STOP default action
    });
});

这是控制器动作

[HttpPost]
public virtual JsonResult Create(List<object> urData){

}

1 个答案:

答案 0 :(得分:0)

您回发具有2个属性的对象,因此您需要具有这2个属性的模型

public class MyModel
{
    public string City { get; set; }
    public int Age { get; set; }
}

并且该方法需要更改为

public JsonResult Create(MyModel model)
{
   .... // model will be populated with the values you sent
   return Json(...);`
}

您需要从ajax方法中删除以下选项

contentType : "application/json",
traditional: true,

或者,你的方法可以是

public JsonResult Create(string city, int age)

但是你失去了模型验证的好处

附注:始终使用Url.Action()方法确保正确生成网址

url: '@Url.Action("Create", "Category")',