2012-09-06 4 views
5

मैं एक एमवीसी अनुप्रयोग विकसित कर रहा हूं जिसमें मल्टीइलेक्ट ड्रॉपडाउन सूची शामिल है। मैं ड्रॉप डाउन के कई चयनित आइटमों की आईडी प्राप्त करना चाहता हूं।मल्टीइलेक्ट सूची के चयनित आइटम को नियंत्रक पर वापस कैसे पास करें?

मैं मॉडल

namespace CustomerDEMOForMultiselect.Models 
{ 
    public class Customer 
    { 
     private int _ID; 
     private string _Name; 
     private double _Amt; 
     public int ID { get { return _ID; } set { _ID = value; } } 
     public string Name { get { return _Name; } set { _Name = value ; } } 
     public double Amt { get { return _Amt; } set { _Amt = value; } } 
    } 
} 

में कोड है और नियंत्रक कोड

namespace CustomerDEMOForMultiselect.Controllers 
{ 
    public class CustomerController : Controller 
    { 
     public ActionResult DisplayCustomer() 
     { 
      Customer oCustomer = new Customer(); 
      List<Customer> CustomersList = new List<Customer>(); 
      CustomersList.Add(new Customer() { ID = 1, Name = "TestCustomer1", Amt = 123 }); 
      CustomersList.Add(new Customer() { ID = 2, Name = "TestCustomer2", Amt = 234 }); 
      CustomersList.Add(new Customer() { ID = 3, Name = "TestCustomer3", Amt = 324 }); 
      ViewBag.CustList = CustomersList; 
      return View(CustomersList); 
      } 
    } 
} 

मैं क्या दृश्य में लिखने के लिए नहीं मिल रहा है है, मैं अलग कोड की कोशिश की है, लेकिन मैं भ्रमित हो रही है .. । दृश्य में

कोड:

@model CustomerDEMOForMultiselect.Models.Customer 
@{ 
    Layout = null; 
} 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>DisplayCustomer</title> 
    </head> 
    <body> 
     <div> 
      @using (Html.BeginForm()) 
      { 
       @Html.DropDownListFor(v => v.ID, new MultiSelectList(ViewBag.CustList,"ID","Name",ViewBag.ID)) 
       <br /> 
       <input type="submit" value="Submit" /> 
      } 
     </div> 
    </body> 
</html> 

मैं व्यू में CustomerName list दिखाना चाहता हूं, इसलिए मैं एकाधिक ग्राहक नाम चुन सकता हूं और उन चयनित ग्राहक आईडी को वापस नियंत्रक को पास कर सकता हूं। यह कैसे करें?

+0

क्या आप अभी तक जो भी प्रयास कर चुके हैं, उसे पोस्ट कर सकते हैं? क्या आपका विचार 'ग्राहक सूची' को अपेक्षित प्रारूप में मॉडल के रूप में संदर्भित करता है? उदाहरण के लिए '@model IList '। आपको अपने कोड में 'सूची ' की बजाय सूची को 'IList ' के रूप में घोषित करना चाहिए। – Nope

+0

मैंने निम्नलिखित कोड का उपयोग किया है। '@ मॉडल ग्राहक DEMOFORMultiselect.Models.Customer @ { लेआउट = शून्य; } DisplayCustomer

@using (Html.BeginForm()) { @Html.DropDownListFor(v => v.ID,new MultiSelectList(ViewBag.CustList,"ID","Name",ViewBag.ID))
}
' – bnil

+0

मैं यह भी कहा कि अपने प्रश्न का कोड, पढ़ने में आसान :) – Nope

उत्तर

15

(मैं इसे करने की कोशिश की) काम करता है करने के लिए चयनित ग्राहकों बाध्य करने के लिए एक संपत्ति के साथ एक आवरण मॉडल का उपयोग:

आवरण मॉडल:

public class CustomerList 
{ 
    public List<Customer> Customers { get; set; } 
    public List<int> SelectedIDs { get; set; } 
} 

नियंत्रक:

 [HttpGet] 
     public ActionResult DisplayCustomer() 
     { 
      Customer oCustomer = new Customer(); 
      List<Customer> CustomersList = new List<Customer>(); 
      CustomersList.Add(new Customer() { ID = 1, Name = "TestCustomer1", Amt = 123 }); 
      CustomersList.Add(new Customer() { ID = 2, Name = "TestCustomer2", Amt = 234 }); 
      CustomersList.Add(new Customer() { ID = 3, Name = "TestCustomer3", Amt = 324 }); 
      ViewBag.CustList = CustomersList; 
      return View(new CustomerList() { Customers = CustomersList }); 

     } 

     [HttpPost] 
     public void DisplayCustomer(List<int> selectedIds) 
     { 
      // do something with the id list 
     } 

दृश्य:

@model MvcApplication2.Models.CustomerList 

@using (Html.BeginForm(@Model.SelectedIDs)) 
{ 
    @Html.ListBoxFor(m => m.SelectedIDs, new MultiSelectList(@Model.Customers, "ID", "Name", @Model.SelectedIDs)) 
    <input type="submit" value="save" /> 
} 

आपको अपने चयन को बांधने और इसे नियंत्रक को वापस भेजने के लिए कुछ चाहिए।

+0

धन्यवाद नथाली Kellenberger, कहाँ करने के लिए इस रैपर वर्ग को जोड़ें? ग्राहक मॉडल में ही? – bnil

+0

क्या मुझे दृढ़ता से टाइप जोड़ने के लिए जोड़ना है? मैंने खाली दृश्य बनाया है। मैं '@ मॉडल. ग्राहक 'पर एक त्रुटि प्राप्त कर रहा हूं और त्रुटि' System.Web.Mvc.MultiSelectList.MultiSelectList (System.Collections.IEnumerable, string, string, System.Collections.IEnumerable) 'है कुछ अमान्य तर्क – bnil

+0

धन्यवाद ... यह काम करता है .. – bnil

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