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

本文关键字:创建 对象 Json net Asp 控制器 获取 | 更新日期: 2023-09-27 18:24:42

我可以在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#类。

有办法吗?

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

变量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的值正确绑定。