当从Javascript发送数据时,模型包含列表对象的空值

时间:2014-04-22 18:45:13

标签: jquery asp.net-mvc asp.net-mvc-4

我正在尝试将动态构建的数据模型从Java脚本发布到Controller:

以下是我的两个模型类:

public class TestModel
{
    public TestModel()
    {
        lst = new List<SubCls>();
    }
    public int ID { get; set; }
    public string Name { get; set; }

    public List<SubCls> lst { get; set; }
}

public class SubCls
{
    public SubCls()
    {
    }
    public int SubID { get; set; }
    public string SubName { get; set; }
}

在控制器端我有一个带有TestModel参数的函数:

[HttpPost]
public ActionResult TestJS(TestModel modelobj, FormCollection formob)
{
}

在Java脚本中,我有以下内容:

var lstsub = {
        SubID: 1,
        SubName: "Sub"
    };
    var modelobj = {
        ID: 1,
        Name: 'MyName',
        lst: [lstsub]
    };

    $.ajax({
        url: '@Url.Action("TestJS")',
        method: 'POST',
        data: modelobj,            
        sucess: function () { alert('Success'); }
    });

现在当这个调用到达服务器时,我可以看到在TestModel字段ID和Name中填充的值,lst字段也有一个0索引的对象,但列表的SubID和SubName字段是0和Null。

另一个观察是,如果我看到表单集合中的值,那么对于lst字段,键就像lst [0] [SubID]而不是lst [0]。[SubID],所以也许这就是为什么它不是正确映射。

如何从java脚本中正确发送此数据,以便使用实际值填充列表。

由于

2 个答案:

答案 0 :(得分:0)

如果这不起作用,请尝试推送到数组

var lstsub = [];
lstsub.push({
    SubID: 1,
    SubName: 'Sub'
});

答案 1 :(得分:0)

您可能需要为ajax调用添加设置,例如traditional:true,dataType:json,

$。AJAX({         url:&#39; @ Url.Action(&#34; TestJS&#34;)&#39;,         方法:&#39; POST&#39;,         传统的:真的,         dataType:json,         数据:modelobj,
        成功:function(){alert(&#39; Success&#39;); }     });