【问题标题】:Passing an array of Javascript classes to a MVC controller?将一组 Javascript 类传递给 MVC 控制器?
【发布时间】:2013-05-25 08:32:30
【问题描述】:

我正在尝试将一系列服务传递给我的控制器。 我尝试了很多不同的方法来让它工作,在进入控制器之前序列化数据,序列化每个服务,似乎唯一可行的是将控制器参数更改为字符串和序列化数组,然后使用 JsonConvert,但我我宁愿不那样做。

使用指定的代码,我在列表中获得了正确数量的项目,但它们都包含一个带有空行会的服务 ID,并且服务提供者 ID 为空。

有什么想法吗?

Javascript

功能服务项目(){ this.ServiceProviderID = '全部'; this.ServiceID = ''; } var selecteditems=(函数(){ var services = new Array(); 返回 { 全部:函数(){ 退货服务; }, 添加:功能(服务){ services.push(服务); } }; })(); var 保留 = []; $.each(selecteditems.all(), function(index, item){ reserved.push({ ServiceID: item.ServiceID, ServiceProviderID: item.ServiceProviderID}); }); getData('Controller/GetMethod', { items: reserved }, function(result) { }); var getData = function (actionurl, da, done) { $.ajax({ 类型:“获取”, 网址:动作网址, 数据:大, 数据类型:“json”, 异步:真, 成功:功能(d){ if (typeof (done) == 'function') { var str = JSON.stringify(d); 完成(JSON.parse(str)); } } }); };

控制器

public JsonResult GetMethod(List items) { }

自定义对象

公共类 CustomObject { 公共 Guid ServiceID {get;set;} 公共指南? ServiceProviderID {get;set;} }

【问题讨论】:

    标签: javascript ajax asp.net-mvc json


    【解决方案1】:

    设置内容类型并使用 POST 而不是 GET(因为它是复杂类型对象的列表)。也使用 HttpPost 属性标记您的操作。

    看看这是否有效:-

     $.ajax({
               type: "POST",
               url: actionurl,
               data: JSON.stringify(da),
               dataType: "json",
               contentType: 'application/json',
               async: true,
               success: function (d) {
                   if (typeof (done) == 'function') {
                       var str = JSON.stringify(d);
                       done(JSON.parse(str));
                   }
               }
           });
    

    【讨论】:

    • getData 实际上是我用于所有数据库调用的一种方法.. 但我将 { items: reserved } 传递给它..
    • traditional:true,使列表包含 0 行,之前为 2 行但为空值
    • @csharpdev 可能是因为复杂的对象类型使用 POST 而不是 GET。
    • kodos,成功了……改成 POST,没想到!
    • @csharpdev GET 适用于简单类型。像列表或整数等。但可能不适用于复杂类型。您可以在 url 中看到使用 get 时数据的变化情况。
    猜你喜欢
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2013-09-05
    • 2016-01-06
    • 2013-08-13
    • 1970-01-01
    • 2014-03-17
    相关资源
    最近更新 更多