如何将 IEnumerable 列表从 Ajax 发送到控制器

Posted

技术标签:

【中文标题】如何将 IEnumerable 列表从 Ajax 发送到控制器【英文标题】:How to send IEnumerable list from Ajax to Controller 【发布时间】:2014-04-16 05:20:16 【问题描述】:

我在 MVC3 中有一个 Web 应用程序,我正在使用 Telerik Grid Batch Editing。

批量编辑有保存更改按钮,它将更新的列返回到控制器 IEnumerable 列表,如

    [GridAction]
    public ActionResult Update(IEnumerable<Customers> updated)
    
        ///user codes
    

但是如何收集更新的行并使数组像 IEnumerable 列表一样从带有 ajax 的 javascript 发送到控制器?

编辑 我把我的观点 png

我只想将更新的行数据发送到控制器,保存更改按钮可以执行此操作,但在发送值之前我只想问用户“您确定要加载吗?”在发送数据后我想刷新所有页面

所以我想用 ajax 请求来做这件事,因为我也在使用 ajax 请求的批量编辑

你对这种情况有什么经验吗?

【问题讨论】:

为什么要用 JavaScript 发送?您不应该尝试手动解析它。请发布您的视图,以便我们查看相关代码。 嗨! @AndreiV 我粘贴了我的 view.jpg 并解释了我想要什么。 您应该使用 JavaScript(或 jQuery)在提交按钮上添加一个事件监听器。点击后,您只需显示confirm @AndreiV 我尝试放置事件,但单击后我必须将 IEnumeratable 列表发送到控制器中的更新函数 【参考方案1】:

使用我在测试过的 Javascript 函数中使用的 AJAX POST::

function TestAjax() 
    var Test = [];

    for (var i = 0; i < 5; i++) 
        Test.push( ID: i, Name: "RJ" );
    

    $.ajax(
        type: 'POST',
        url: rootUrl('Home/TestPost'),
        contentType: "application/json",
        //data:  Test: JSON.stringify( data) ,
        data:JSON.stringify( Test: Test),
        success: function (data) 
            alert("Succeded");
        
    );

在服务器端(即在控制器中)使用类似的东西::

public ActionResult TestPost(IEnumerable<TestViewModel> Test)
    
        return Json(3);
    

ViewModel 包含不同数据类型的不同属性::

public class TestViewModel
    
        public long ID  get; set; 
        public string Name  get; set; 
    

这工作正常。或许这会对你有所帮助。

【讨论】:

Thnx @Rahul 我明白你在做什么,但我想发送所有更新的行数据,有些数据是十进制的,有些数据是字符串我怎样才能在网格中捕获更新的行?? @saul dataType 没有任何内容。正如您在我给定的示例中看到的那样,我正在传递 ID(长)和名称(字符串)。好的,让我也用 viewmodel 编辑我的答案。

以上是关于如何将 IEnumerable 列表从 Ajax 发送到控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个 IEnumerable<IEnumerable<T>> 列表添加到 IEnumerable<List<int>>

将复选框列表传递到视图中并拉出 IEnumerable [重复]

Django - 如何正确地将列表从模板发送到 AJAX 以查看?

从IEnumerable创建逗号分隔的列表

使用 AJAX 绑定时创建/更新后具有 IEnumerable 属性的 Kendo Grid 模型未正确更新

jquery - 如何使用通过 AJAX 从 MySQL 和 PHP 检索的数据将图像添加到 Select2 下拉列表?