1

我试图将列表从视图传递到控制器,但我得到空值。代码编写如下:

模型类:

public class testModel
{
    public int ID { get; set; }

    public string Name { get; set; }

    public List<myModel> ParameterList {get;set;}
}

将数据发布到控制器的 jquery 和 ajax 代码:

var myModel = {
                  "Name":"test",      
                  "Description":"desc"      
                };

        var Object = {
            Name: $("#Name").val(),
            ParameterList : myModel
        };

        $.ajax({
            url: '/controller/action',
            type: 'POST',
            data: JSON.stringify(Object),
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {   }
                else { }
            }
        });

我正在获取 Name 属性的值,但不是 ParameterList。这里有什么问题?我错过了什么吗?

请帮帮我。

谢谢

编辑:评论中的控制器代码,

 public JsonResult Save(Object Obj) 
 {
 // logic for managing model and db save
 } 
4

3 回答 3

3

你说,

我得到了 Name 属性的值,但没有得到 ParameterList 的值。

这让我想知道 ParameterList 的结构是什么myModel,因为您已将 ParameterList 声明为 myModel 类型的列表:List<myModel> ParameterList

另外,我建议您登录JSON.stringify(Object)到控制台并检查您实际发布到控制器的 Json 值。

这是我发现你必须发回的内容

{"Name":"yasser","ParameterList":{"Name":"test","Description":"desc"}} 

另请阅读这些文章:

如何将复杂的 json 对象视图传递给 ASP.net MVC 中的控制器

将 JSON 对象从 Javascript 代码传递到 MVC 控制器

于 2012-11-07T05:10:53.960 回答
1

尝试这个:

var myModel = [{
              "Name":"test",      
              "Description":"desc"      
            }];

    var Object = {
        Name: $("#Name").val(),
        ParameterList : myModel
    };

    $.ajax({
        url: '/controller/action',
        type: 'POST',
        data: Object,
        dataType: 'json',
        traditional: true,
        contentType: 'application/json; charset=utf-8',
        success: function (data) {   }
            else { }
        }
    });
于 2012-11-07T06:31:22.710 回答
0

像这样尝试..希望这会有所帮助!

脚本:

var emp = [{ 'empid': 1, 'name': 'sasi' },{ 'empid': 2, 'name': 'sathish'}];
emp = JSON.stringify(emp)
$.post("/Home/getemplist/", { 'emp': emp })

控制器:

这里我只是将参数更改为字符串类型。使用 JavaScriptSerializer 您可以将此字符串数据转换为您的类列表对象。如果您在下面看到我的代码,您可以更好地理解它:

public void getemplist(string emp) 
{
    List<Emp> personData;
    JavaScriptSerializer jss = new JavaScriptSerializer();
    personData = jss.Deserialize<List<Emp>>(emp);
    // DO YOUR OPERATION ON LIST OBJECT

}
于 2014-06-21T17:29:30.130 回答