Kendo ui 剑道UI MVC向动作方法发送多选数据值

Kendo ui 剑道UI MVC向动作方法发送多选数据值,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,位于的kendouiajax绑定文档描述了将多个数据参数传递给动作方法,但它没有处理传递数组(如MultiSelect值)的问题 在下面的示例中,如果multisel设置为类似237896的字符串,则控制器将接收sitesFilter=237896。但是,如果将multisel设置为如下所示的MultiSelect值,则控制器将接收sitesFilter=null 使用MVC包装器将所有MultiSelect值发送到Action方法的正确方法是什么 .DataSource(dataSou

位于的kendouiajax绑定文档描述了将多个数据参数传递给动作方法,但它没有处理传递数组(如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
        };

我的解决方案不使用Ajax,但总体上描述了多选择值到控制器的传输!Ajaxify它,模型传输应该同样工作

.cshtml筛选器视图:带有选择字段的表单,用于将所选值发布到控制器。Products是具有属性ID和DisplayName的产品类型列表

Model.cs:使用的特定模型

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

在Controller Action.jpeg中接收到POST数据:您将看到Kendo.MultiSelect中select条目的GUID填充列表


var multisel=$sites.datakendoMultiSelect.value;未被转换为字符串


var multisel=$sites.datakendoMultiSelect.value.toString;解决了问题。

Florian-谢谢。通过将multiselect数据值转换为字符串,我的问题得到了解决。控制器操作中接收到的POST数据。jpeg:这应该是图像吗?你能显示你如何发布你的数据吗?
[HttpPost]
public ActionResult SearchForLicenseTerm(SearchLicenseTermFilterViewModel searchLicenseTermFilterViewModel)
{
    // Search logic
}
public class SearchLicenseTermFilterViewModel
{
    public SearchLicenseTermFilterViewModel()
    {
        ProductIds = new List<Guid?>();
    }        
    public List<Guid?> ProductIds { get; set; }
}