2013-03-29 46 views
5

Ajax Binding處的Kendo UI Ajax綁定文檔描述了將多個數據參數傳遞給Action方法,但它沒有處理像MultiSelect值這樣的傳遞數組。Kendo UI MVC將MultiSelect數據值發送到Action方法

在下面的示例中,如果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 
     }; 

回答

3

我的解決方案不使用Ajax,但介紹到控制器multiselected值傳輸一般! Ajaxify它,模型傳輸應該同樣工作!

.cshtml過濾器視圖:窗體包含選擇字段以將所選值張貼到控制器。 Model.Products是類型產品的具有屬性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:行動

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

在控制器動作.JPEG 接收POST數據:你正在查看所選條目的全部GUID列表f ROM的Kendo.MultiSelect

enter image description here

+0

Florian - 謝謝。我的問題是通過將多選數據值轉換爲字符串來解決的。 – Mark

+1

<3這一個保存了我的培根<3 – decompiled

+0

「在Controller Action .jpeg中收到POST數據:」這是否應該是圖像?你能顯示你發佈數據的方式嗎? – JoshYates1980

1

VAR multisel = $( 「#站點」)的數據( 「kendoMultiSelect」)值()。;沒有被轉換爲字符串。數據(「kendoMultiSelect」).value()。toString();解決了這個問題。

+0

接受並完成問題,爲了品質:) –

相關問題