0

当我有一个 Ienumerable 参数时,如何在 kendo ui Grid 中使用 data() 将数据发送到服务器我无法在读取函数 Grid in View 中为“IEnumerable selectedNodeGroupClass”发送数据

  @(Html.Kendo().Grid<UserProtocol>()
                              .Name("UserProtocol")
                              .DataSource(dataSource => dataSource
                                  .Ajax()
                                  .PageSize(15)
                                  .Model(model => model.Id(m => m.tblProtocolID))
                                  .Destroy(destroy => destroy.Action(MVC.Protocol.ActionNames.GridRowDelete, MVC.Protocol.Name))
                                  .Read(read => read.Action(MVC.Protocol.ActionNames.ReadProtocols, MVC.Protocol.Name).Data("additionalData"))

                              )
                              .Columns(columns =>
                              {
                                  columns.Template(@<text></text>).ClientTemplate("#= renderNumber(tblProtocolID)#").Width(30).HeaderTemplate(@<text><input type="checkbox" id="SelectAllCheckBox" value="false" /></text>);
                                  columns.Bound(m => m.dateFrom).Title("تاریخ شروع");
                                  columns.Bound(m => m.dateTo).Title("تاریخ پایان");
                                  columns.Bound(m => m.isActive).Title("وضعیت").ClientTemplate("# if (isActive) { #" + "فعال" + "# } else { #" + "غیر فعال" + "# } #");

                                  columns.Bound(m => m.fName).Title("نام");
                                  columns.Bound(m => m.lName).Title("نام خانوادگي");
                                  columns.Bound(m => m.shomarShenasname).Title("شماره شناسنامه");
                                  columns.Bound(m => m.nationalCode).Title("کد ملی");
                                  columns.Bound(m => m.fatherName).Title("نام پدر");
                                  columns.Bound(m => m.isMale).Title("جنسيت").ClientTemplate("# if (isMale == true) { #" + "مرد" + "# } else { #" + "زن" + "# } #");
                                  columns.Bound(m => m.birthDate).Title("تاريخ تولد");
                                  columns.Template(@<text></text>).Width(40)
                                  .ClientTemplate(Html.ActionLink(" ", MVC.Protocol.ActionNames.UpdateProtocol, new { tblProtocolID = "#= tblProtocolID #" }, new { @class = "tablectrl_small bBlue tipS edit MyCustomAddBtn" }).ToHtmlString());
                                  columns.Template(@<text></text>).ClientTemplate(@"<a href=""\#"" class=""k-button-icontext tablectrl_small bRed tipS Remove MyCustomAddBtn"" data-id='#= tblProtocolID #' />").Width(40);//k-grid-delete
                              })
                                  .Sortable()

                                  .Pageable(p => p.Messages(x =>
                                      {
                                          x.Display("تعداد {0} - {1} از {2}");
                                          x.Empty("اطلاعاتی برای نمایش در دسترس نیست.");
                                          x.First("صفحه اول");
                                          x.Last("صفحه آخر");
                                          x.Previous("صفحه قبل");
                                          x.Next("صفحه بعد");
                                          x.ItemsPerPage("مورد");
                                          x.Of("از");
                                          x.Page("صفحه");
                                      }))
                                  .Scrollable()
                            .Editable(editable => editable.DisplayDeleteConfirmation(false))
                     //.Events(ev => ev.DataBound("resetRowNumber"))
                            .HtmlAttributes(new { style = "Height:430px; border-width:0px" })
                         .ToolBar(toolbar => toolbar.Template("<input id=\"DeleteAll\" type=\"button\" value=\"حذف انتخاب شده ها\" class=\"k-button\" />"))
                                  )

在我的控制器中读取功能

 [HttpPost]
    public virtual JsonResult ReadProtocols([DataSourceRequest] DataSourceRequest request, UserProtocol userProtocol = null, IEnumerable<Test> selectedNodeGroupClass = null)
    {

}

测试类:

public class Test
{
    public string ID { get; set; }
    public bool IsSelect { get; set; }
}

jquery 中的 data() 函数是

 function additionalData() {

        ////Define a class
        function Test(id, isSelect) {
            this.ID=id,
            this.IsSelect=isSelect
        }

        var arr = new Array();

        $('#sidebarmenu1 input:checkbox').each(function () {
            var value;
            var checked = false;
            if ($(this).is(":checked")) {
                checked = true;

            }
            value = $(this).parent().parent().parent().find("input:hidden").first().val();
            var s = new Test(value, checked);
            arr.push(s);

        });
        var strAr = JSON.stringify(arr);
        debugger;

        return {
    selectedNodeGroupClass:arr, 
    dateFrom: $("#dateFrom").val(),
            dateTo: $("#dateTo").val(),
            nationalCode: $("#nationalCode").val(),
            shomarShenasname: $("#shomarShenasname").val(),
            fName: $("#fName").val(),
            lName:$("#lName").val(),








        };
    }
4

1 回答 1

0

默认的 MVC 模型绑定器需要特殊格式,数据表单集合应以该格式组成。这个论坛主题讨论了整个魔法。您可以从这个代码库中获得一个通用函数来处理 JavaScript 数组的“转换”,该代码库显示了对象的多选集合是如何发送到服务器的。

于 2013-11-01T22:59:39.673 回答