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

4
我有一个基于MVC3的Web应用程序,我正在使用Telerik Grid Batch Editing。
批量编辑具有保存更改按钮,将更新列返回给控制器IEnumerable列表,例如:
    [GridAction]
    public ActionResult Update(IEnumerable<Customers> updated)
    {
        ///user codes
    }

但如何收集更新的行并从JavaScript使用ajax将数组发送到Controller,使其像IEnumerable列表一样?
编辑:我正在放置我的视图PNG
我只想将更新的行数据发送到控制器,并且“保存更改”按钮可以执行此操作,但在发送值之前,我只想问用户“您确定要加载吗?”并在发送数据之后刷新整个页面。
因此,我考虑使用ajax请求来完成此操作,因为我还使用ajax请求进行批处理编辑。
您对这种情况有任何经验吗?

为什么你要用JavaScript发送它?你不应该尝试手动解析它。请发布你的View,以便我们可以查看相关代码。 - Andrei V
嗨!@AndreiV,我贴了我的view.jpg并解释了我想要的。 - saulyasar
你应该使用JavaScript(或jQuery)在提交按钮上添加一个事件监听器。点击时,只需显示一个“确认”。 - Andrei V
@AndreiV 我尝试添加事件,但是在我点击后,我必须将 IEnumeratable 列表发送到我的 Controller 中的 Update 函数。 - saulyasar
1个回答

6

使用AJAX POST,就像我在我的Tested Javascript函数中使用的那样:

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

这个运行得很好。也许这会对你有所帮助。


谢谢@Rahul,我理解你的意思,但我想发送所有更新的行数据,有些数据是小数,有些数据是字符串,还想知道如何捕获网格中的更新行? - saulyasar
@saul,dataType 没有问题。正如你在我的示例中看到的那样,我传递了 ID(长整型)和 Name(字符串)。好的,让我也用视图模型编辑我的答案。 - Rahul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接