Kendo UI MVC如何将MultiSelect数据值发送到Action方法

5

Ajax Binding的Kendo UI Ajax绑定文档中,描述了将多个数据参数传递给操作方法,但没有说明如何传递像MultiSelect值这样的数组。

在下面的示例中,如果multisel设置为类似于“237896”的字符串,则控制器接收sitesFilter =“237896”。但是,如果将multisel设置为如下所示的MultiSelect值,则控制器接收sitesFilter = null。

使用MVC包装器发送所有MultiSelect值到Action方法的正确方法是什么?

    .DataSource(dataSource => dataSource
                              .Ajax()
                              .ServerOperation(false)
                              .Read(read => read.Action("Documents_Read", "Document")
                                                .Type(HttpVerbs.Post)
                                                .Data("getCriteria"))

    function getCriteria() {
    var multisel = $("#sites").data("kendoMultiSelect").value();
    return {
        sitesFilter: multisel
    };
}

    public ActionResult Documents_Read([DataSourceRequest] DataSourceRequest request, string sitesFilter=null)
    {
        return Json(GetDocuments(sitesFilter).ToDataSourceResult(request), JsonRequestBehavior.DenyGet);
    }

编辑:getCriteria应将数据转换为字符串,如下所示:

 function getCriteria() {
        var multisel = $("#sites").data("kendoMultiSelect").value().toString();
        return {
            sitesFilter: multisel
        };
2个回答

3

我的解决方案没有使用Ajax,但是一般描述了多选值向控制器的传输方式!将其Ajax化,模型传输应该类似工作!

.cshtml筛选视图:带有选择字段的表单将选定的值POST到控制器。 Model.Products 是一个类型为Product的属性IDDisplayName的列表。

<div class="editor-field">
    @{
        IEnumerable<Product> productSelectList = Model.Products;
        Html.Kendo().MultiSelectFor(model => model.ProductIds)
            .BindTo(new SelectList(productSelectList, "ID", "DisplayName"))
            .HtmlAttributes(new { style = "width: 400px;" })
            .Render();    
    }
</div>

Controller.cs: Action

[HttpPost]
public ActionResult SearchForLicenseTerm(SearchLicenseTermFilterViewModel searchLicenseTermFilterViewModel)
{
    // Search logic
}

Model.cs: 指定使用的具体模型

public class SearchLicenseTermFilterViewModel
{
    public SearchLicenseTermFilterViewModel()
    {
        ProductIds = new List<Guid?>();
    }        
    public List<Guid?> ProductIds { get; set; }
}

在控制器操作中接收POST数据:您正在查看来自Kendo.MultiSelect选择条目的填充GUID列表

enter image description here


Florian - 谢谢。我的问题已经通过将多选数据值转换为字符串来解决。 - user2207990
1
<3 这个救了我的命 <3 - decompiled
在控制器操作中接收了POST数据 .jpeg:这是一个图片吗?你能展示一下你如何提交数据吗? - JoshYates1980

2

var multisel = $("#sites").data("kendoMultiSelect").value();

这段代码中的multisel没有被转换为字符串。

通过添加.toString()方法,可以解决这个问题:

var multisel = $("#sites").data("kendoMultiSelect").value().toString();


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