使用jquery从viewmodel(视图到控制器)传递类列表
我有一个视图,其中包含viewmodel作为模型。我想将viewmodel中的一个类(某个类的列表)从视图发送到控制器,并发送到操作 这是我的视图模型使用jquery从viewmodel(视图到控制器)传递类列表,jquery,asp.net-mvc,razor,model-view-controller,asp.net-ajax,Jquery,Asp.net Mvc,Razor,Model View Controller,Asp.net Ajax,我有一个视图,其中包含viewmodel作为模型。我想将viewmodel中的一个类(某个类的列表)从视图发送到控制器,并发送到操作 这是我的视图模型 public class CustomClass { public ABC objABC { get; set; } public DEF objDEF { get; set; } public List<XYZ> objXYZLst { get; set; } } 这
public class CustomClass
{
public ABC objABC { get; set; }
public DEF objDEF { get; set; }
public List<XYZ> objXYZLst { get; set; }
}
这是我的观点
var url = "@Url.Action("ActionName", "ContollerName")";
var model = '@Html.Raw(Json.Encode(Model.objXYZLst))';
$.ajax({
type: 'post',
url: url,
data: JSON.stringify(model),
contentType: 'application/json',
dataType: "json",
success: function (data) {
$("#dvLst").html(data);
}
});
这就是我的行动
[HttpPost]
public PartialViewResult ActionName(List<XYZ> model)
{
return PartialView(model);
}
[HttpPost]
公共PartialViewResult操作名(列表模型)
{
返回局部视图(模型);
}
控制器和模型中的值始终为空。objXYZLst有两个数据数组。
请帮助您在此处声明了字符串变量:
var model = '@Html.Raw(Json.Encode(Model.objXYZLst))';
然而,您需要一个javascript对象,因此请去掉周围的引号,它将起作用:
var model = @Html.Raw(Json.Encode(Model.objXYZLst));
代码的另一个问题是指定的预期返回类型:
dataType: "json",
但控制器操作返回HTML片段:
public PartialViewResult ActionName(List<XYZ> model)
{
return PartialView(model);
}
public PartialViewResult操作名(列表模型)
{
返回局部视图(模型);
}
当jQuery尝试将此HTML反序列化回javascript对象时,它将失败,并且您的
success
回调将不会在客户端上调用。因此,请去掉这个数据类型:“json”
,并让jQuery使用内容类型响应头自动推断它。请发布代码以供查看。将控制器刚刚发送到视图的相同未更改集合从视图传递到控制器有什么意义(只需像在get方法中那样再次获取它。但是,由于您已经拥有了它,只需在循环内的视图中呈现集合,或者只需使用@Html.Partial(“ActionName”,Model.objXYZLst)
@haim770-thanx bro..get 2 count@Stephen Muecke-事实上,我正在做我在这里写的其他事情,只是为了解决我所面临的问题。但是,是的,从操作返回后,它没有在div中呈现内容,因为数据类型是json,我删除了它,现在正在为信息处理.thanx
public PartialViewResult ActionName(List<XYZ> model)
{
return PartialView(model);
}