我正在尝试将List从视图传递到控制器但我得到空值。代码编写如下:
模特课:
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
}
答案 0 :(得分:3)
你说,
我获得了Name属性的值,但没有获得ParameterList的值。
这让我想知道myModel
的结构是什么,因为你已经将ParameterList声明为myModel类型的列表:List<myModel> ParameterList
另外,我建议您将JSON.stringify(Object)
记录到控制台并检查您实际发布到控制器的Json值。
以下是我发现你必须回复的内容
{"Name":"yasser","ParameterList":{"Name":"test","Description":"desc"}}
另请阅读这些文章:
How can I pass complex json object view to controller in ASP.net MVC
答案 1 :(得分: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 { }
}
});
答案 2 :(得分: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
}