【问题标题】:Passing a list of class from viewmodel (view to controller) using jquery使用jquery从viewmodel(视图到控制器)传递类列表
【发布时间】:2017-10-06 02:09:02
【问题描述】:

我有一个包含 viewmodel 作为模型的视图。我想将视图模型中的一个类(它是某个类的列表)从视图发送到控制器再到一个动作。

这是我的视图模型

public class CustomClass
    {
        public ABC objABC { get; set; }
        public DEF objDEF { get; set; }
        public List<XYZ> objXYZLst { get; set; }
    }

这是 XYZ 类

 public class XYZ
    {
        public long RelationPersonId { get; set; }
        public string Relationship { get; set; }
        public string PhoneNo { get; set; }
        public string PropertyName { get; set; }
        public bool IsPropertyError { 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);
        }

值在控制器中始终为空,并且 Model.objXYZLst 有两个数据数组。 请帮忙

【问题讨论】:

  • 能否请您发布您的代码以供查看。
  • 将完全相同的未更改集合从视图传递到控制器刚刚发送到视图的控制器有什么意义(只需像在 GET 方法中所做的那样再次获取它。但是既然你已经拥有它,只需在循环内的视图中呈现集合,或者只使用@Html.Partial("ActionName", Model.objXYZLst)
  • @haim770-thanx bro..got 2 count
  • @Stephen Muecke-实际上我正在做一些我在这里写的其他事情,只是为了解决我面临的问题。

标签: jquery asp.net-mvc razor model-view-controller asp.net-ajax


【解决方案1】:

你在这里声明了一个字符串变量:

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);
}

当 jQuery 尝试将此 HTML 反序列化回 javascript 对象时,它将失败,并且您的 success 回调将不会在客户端上调用。所以也去掉这个dataType: "json",,让jQuery使用Content-Type响应头来自动推断它。

【讨论】:

  • 但是是的,从操作返回后它没有呈现 div 中的内容,因为数据类型是 json,我删除了它,现在可以工作了。谢谢你的信息
猜你喜欢
  • 1970-01-01
  • 2014-09-26
  • 2020-10-18
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
相关资源
最近更新 更多