如何使用Ajax和jQuery将复杂类型传递给ASP.NET MVC控制器

时间:2016-02-09 22:19:21

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

我在另一个复杂类型(模型)中获取复杂变量( RamarksList )属性的空值。

查看适用于名称类型的值,但我看到复杂类型 RemarksList

这是我的代码。请看一下并提出建议。

jQuery:

 var data = {               
            'Name': 'Apple',
            'Type': 'Fruit',
            'RemarksList': [
              {
                  'Parameter': 'test 1',
                  'Comments': 'test 123'
              },
              {
                  'Parameter': 'test 2',
                  'Comments': 'abc 3455'
              }
            ]
        };



var url = "/Controller/Action";

            $.ajax({
                url: url,
                type: 'POST',
                dataType: 'application/json',
                data: data,
                success: function (data) {

                }
            });

控制器:

[HttpPost]
        public ActionResult Save(Model model)
        {
            return View();
        }

模型类:

public class Model
    {
        public int Id { get; set; }      
        public string Name { get; set; }
        public string Type{ get; set; }
        public List<Remarks> RemarksList { get; set; }
    }

public class Remarks
{
    public int Id { get; set; }
    public string Parameter { get; set; } 
    public string Comments { get; set; } 
}

2 个答案:

答案 0 :(得分:0)

我把你的代码放在我的测试项目中,我得到了正确的数据。实际上 RemarksList 不是null并且工作正常!!

Result.

答案 1 :(得分:0)

首先使用JSON.stringify

转换字符串中的数据
$.ajax({
                url: url,
                type: 'POST',
                dataType: 'application/json',
                data: JSON.stringify(data),
                success: function (data) {

                }
            });

然后从以下

更改控制器代码
        [HttpPost]
        public ActionResult Save(string model)
        {
           JavaScriptSerializer json_serializer = new JavaScriptSerializer();
           Model routes_list =(Model)json_serializer.DeserializeObject(model);
           return View();
        }