加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

kendo-ui – Kendo UI MVC将MultiSelect数据值发送到Action方法

发布时间:2020-12-16 03:28:31 所属栏目:asp.Net 来源:网络整理
导读:Ajax Binding中的Kendo UI Ajax Binding文档描述了将多个数据参数传递给Action方法,但它没有解决传递MultiSelect值等数组的问题. 在下面的示例中,如果multisel设置为类似“237896”的字符串,则控制器接收sitesFilter =“237896”.但如果multisel设置为MultiS
Ajax Binding中的Kendo UI Ajax Binding文档描述了将多个数据参数传递给Action方法,但它没有解决传递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,但一般描述了多选值传输到Controller! Ajax化它,模型传输应该类似!

.cshtml过滤视图:带有选择字段的表单,用于将所选值POST到Controller. Model.Products是具有属性ID和DisplayName的类型产品的列表.

<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:行动

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

在Controller Action .jpeg中收到POST数据:您正在看到来自Kendo.MultiSelect的选择条目的GUID的填充列表

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读