在我的javascript中,我使用两个属性创建一个类似JSON的对象:ControllerName和WordNumber并将它们添加到数组中。
function TestN() {
var list = new Array();
$("*[wordNum]").each(function ()
{
var endRes = {
ControllerName: this.id,
WordNumber: this.getAttribute("wordNum")
};
list.push(endRes);
});
jQuery.ajax({
url:' @Url.Action("Translate")' ,
contentType: "application/json",
dataType: "json",
data: { List : JSON.stringify(list) }
,
traditional: true
})
}
</script>
在.net中,我的这个类具有相同的属性:
public class TranslateModel
{
public string ControllerName { get; set; }
public string WordNumber { get; set; }
}
这是我的行动+
public ActionResult Translate(ICollection<TranslateModel> List)
{ return View(); }
您可能认为Translate Action中的List属性为空(模型绑定不起作用);
答案 0 :(得分:3)
当您使用JSON.stringify(list)时,它会将字符串值发送到控制器操作,而不是对象。
有两种方法 1)要么将字符串发送到控制器的动作,要么将字符串反序列化为对象并使用。
2)将model属性创建为list数组,并将该模型发送到controller action而不使用JSON.stringify。
这里有两个可以帮助你的链接。
- 接近-1
ASP.NET MVC 4 JSON Binding to the View Model - Nested object error
- 方法-2 Passing json list to MVC 3
答案 1 :(得分:0)
尝试将AJAX功能更改为:
jQuery.ajax({
url: ' @Url.Action("Translate")',
type: 'POST',
contentType: "application/json",
dataType: "json",
data: JSON.stringify({ 'List': list }),
traditional: true
});