2013-03-29 13 views
5

पर मल्टीसेलेक्ट डेटा मान भेजें Ajax Binding पर केंडो यूआई अजाक्स बाध्यकारी दस्तावेज एक एक्शन विधि में एकाधिक डेटा पैरामीटर पास करने का वर्णन करता है लेकिन यह मल्टीसेलेक्ट मानों जैसे गुजरने वाले सरणी को संबोधित नहीं करता है।केंडो यूआई एमवीसी एक्शन विधि

नीचे दिए गए उदाहरण में, यदि मल्टीसेल को "237896" जैसी स्ट्रिंग पर सेट किया गया है, तो नियंत्रक साइटफिल्टर = "237896" प्राप्त करता है। लेकिन यदि मल्टीसेल को नीचे दिखाए गए मल्टीसेलेक्ट मान पर सेट किया गया है, तो नियंत्रक साइटफिल्टर = शून्य प्राप्त करता है।

एमवीसी रैपर का उपयोग कर एक्शन विधि में सभी मल्टीसेलेक्ट मान भेजने का उचित तरीका क्या है?

.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); 
    } 

संपादित करें:

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

उत्तर

3

मेरे समाधान अजाक्स का उपयोग नहीं है, लेकिन सामान्य रूप में नियंत्रक को multiselected मूल्यों के प्रसारण में बताता है: जैसा कि नीचे दिखाया getCriteria एक स्ट्रिंग के लिए डेटा परिवर्तित करना चाहिए! इसे अजाक्सित करें, मॉडल ट्रांसमिशन को समान रूप से काम करना चाहिए!

.cshtml फ़िल्टर दृश्य: चयन फ़ील्ड के साथ चयनकर्ताओं को चुने गए मानों को पोस्ट करने के लिए फॉर्म। Model.Products एक प्रकार उत्पाद की सूची गुण आईडी और 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; } 
} 

नियंत्रक कार्रवाई .jpeg में प्राप्त पोस्ट डेटा: आप चुनिंदा प्रविष्टियों के GUID की भरी सूची देख रहे हैं f रॉम Kendo.MultiSelect

enter image description here

+0

फ्लोरियन - धन्यवाद। मेरी समस्या को मल्टीइलेक्स्ट डेटा मान को स्ट्रिंग में परिवर्तित करके हल किया गया था। – Mark

+1

<3 इसने मेरे बेकन को बचाया <3 – decompiled

+0

"नियंत्रक कार्रवाई में पोस्ट डेटा प्राप्त किया .jpeg:" क्या यह एक छवि होने का अनुमान है? क्या आप अपना डेटा पोस्ट कर सकते हैं? गुणवत्ता के लिए – JoshYates1980

1

वर multisel = $ ("# साइटों") डेटा ("kendoMultiSelect") मूल्य()।। एक स्ट्रिंग में परिवर्तित नहीं किया जा रहा था।

var multisel = $ ("# साइट्स") डेटा ("kendoMulti चयन करें")। मान()। ToString(); समस्या का हल किया।

+0

प्रश्न को स्वीकार और समाप्त करें:) –

संबंधित मुद्दे