asp.net-mvc - MVC - 如何使用这种不寻常的发布数据格式对列表和对象进行建模?

标签 asp.net-mvc asp.net-mvc-4 kendo-ui kendo-asp.net-mvc

通常当您使用 MVC ModelBind 对象列表时,操作如下所示:

    public ActionResult Hello(List<DocumentViewModel> viewModels)
    {

Post 数据看起来像这样:

[0].Id 1
[0].Name Bob
[1].Id 2
[1].Name Jane

但是,我怎样才能让下面的帖子数据起作用呢?

0[Id] 1
0[Name] Bob
1[Id] 2
1[Name] Jane

帖子数据由 Kendo UI 提供,所以我认为我没有很大的灵 active 来更改它。

更新 感谢 Petur 的回答。为了扩展他的答案,这个函数:

common.MvcSerializeArray = function (array, prefix) {
    var result = {};

    if (!prefix) {
        prefix = '';
    }

    if (array) {
        for (var i = 0; i < array.length; i++) {
            if ($.isPlainObject(array[i])) {
                for (var property in array[i]) {
                    result[prefix + "[" + i + "]." + property] = array[i][property];
                }
            } else {
                result[prefix + "[" + i + "]"] = array[i];
            }
        }
    }

    return result;
};

应该在返回到 Kendo 的数据方法之前包装数组:

    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read
            .Action("PickerDocuments", "DocumentRepository")
            .Data(@<text>function(e) { return MyApp.Common.MvcSerializeArray(@Html.Raw(Json.Encode(Model))); }</text>)))

瞧,我轻松获得了发布数据 MVC 模型绑定(bind):

[0].Id 1
[0].Name Bob
[1].Id 2
[1].Name Jane

最佳答案

您无法更改它,但您可以通过发送附加参数来添加所需的格式,如 here 所述对于 Ajax 网格。 this 中使用了相同的方法代码库(可以在代码中获取magic函数,用于发送多选值)

关于asp.net-mvc - MVC - 如何使用这种不寻常的发布数据格式对列表和对象进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18853779/

相关文章:

asp.net-mvc - Fluent 验证 When 子句

javascript - 使用 Html.BeginCollectionItem 时 MVC AutoComplete EditorFor

asp.net-mvc-4 - 试图将 HtmlHelper 传递给助手的噩梦

datasource - Kendo UI 条形图数据分组

javascript - Kendo TreeList 绑定(bind)不会保留在行编辑上

jquery-ui - KendoUI 像 JQueryUI 一样可排序

c# - 在具有 Windows 身份验证的 ASP.Net 5 中使用 IIS Express/Kestrel 时,User.IsInRole 始终为 false

asp.net-mvc - 带有自定义文字的 asp .net mvc 路由 url

javascript - 隐藏 id 字段的自动完成功能不起作用

ajax - PartialView 不起作用(整个页面刷新)