在Asp.net控制器中获取Json对象而无需创建classe

时间:2015-11-26 20:06:21

标签: c# jquery json asp.net-mvc

我可以在asp.net mvc控制器中检索json对象吗?

这是我的ajax请求

// get form values
var nameValue = $("#name").val();
var ageValue = $("#age").val();

// json object
var person = {

    name: nameValue,
    age: ageValue
};


        $.ajax({
            url: '/Home/GetData',
            type: 'POST',
            data:{userObj: person},
            success: function (data, textStatus) {
                alert(data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("Erro :" + XMLHttpRequest.responseText + "| " + textStatus + "| " + errorThrown);
            }
        });

这是我的asp.net MVC控制器方法

        [HttpPost]
        public String GetData(dynamic userObj)
        {
            dynamic person = System.Web.Helpers.Json.Decode(userObj);
            return userObj.name; // It didn't work
        }

我想在我的控制器中检索这个对象,并将其用作userObj.name,userObj.age,就像C#中的json对象一样,不需要为此创建一个具有相同参数的C#类。

有什么办法吗?

1 个答案:

答案 0 :(得分:1)

您的变量person已经是您需要发送给控制器的对象,因此您应该使用ajax函数

$.ajax({
    url: '@Url.Action("GetData", "Home")', // don't hard code your url's
    type: 'POST',
    data: person, // change this
    success: function (data, textStatus) {
        alert(data);
    },

然后你的控制器方法应该是

[HttpPost]
public String GetData(Person userObj)

其中Person

public class Person
{
  public string Name { get; set; }
  pubic int Age { get; set; }
}

发布数据时,userObj的值将与nameValueageValue的值正确绑定。