2009-08-10 13 views
45

यदि आपके पास ASP.NET MVC में एकाधिक में सेट एक चयन सूची है, तो मॉडलबाइंडिंग कैसे काम करती है?एएसपी.नेट एमवीसी में मॉडल बाध्यकारी के साथ एक से अधिक चयन सूची कैसे काम करती है?

यह आपके चुने हुए आइटम, सरणी के लिए क्या वापस आता है?

<SELECT NAME="toppings" MULTIPLE SIZE=5> 
    <option value="mushrooms">mushrooms</option> 
    <option value="greenpeppers">green peppers</option> 
    <option value="onions">onions</option> 
    <option value="tomatoes">tomatoes</option> 
    <option value="olives">olives</option> 
</SELECT> 

उत्तर

25

हाँ, डिफ़ॉल्ट रूप से एक multiselectlist चुने गए मानों की एक सरणी के माध्यम से पोस्ट करेंगे।

This article में अधिक जानकारी है, जिसमें मल्टीइलेक्स्टलिस्ट के साथ दृढ़ता से टाइप किए गए दृश्यों का उपयोग करना शामिल है।

  • आपका मॉडल या दृश्य मॉडल वर्ग चयनित विकल्प मदों के लिए आईडी के लिए एक संग्रह संपत्ति की जरूरत है, उदाहरण के लिए:

    जुड़ा हुआ "लेख" से

    List<int> ToppingIds

  • प्रपत्र अपने बहु-चयन-सूची पदों से युक्त, आप संग्रह संपत्ति आप मॉडल या दृश्य मॉडल वर्ग को जोड़ा गया के माध्यम से चयनित विकल्प आइटम एक्सेस कर सकते हैं जो करने के लिए नियंत्रक कार्रवाई विधि में।
7

VegTableViewmodel में:

public IEnumerable<MultiSelectList> Vegetables { get; set; } 

नियंत्रक में: सब्जियों सूची प्राप्त करें, और फिर इसे VegTableViewModel की सब्जियां संपत्ति के लिए गुजरती हैं।

viewmodel.Vegetables = vegetables .Select(d => new MultiSelectList(d.VegName)); 

देखें में:

@Html.ListBoxFor(m => m.L, new MultiSelectList(Model.Vegetables.Select(d => d.Items)) 
19

हाँ, यह एक सरणी देता है।

मॉडल दृश्य:

public class MyViewModel 
{ 
    public int[] SelectedIds { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

नियंत्रक:

public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     // fetch the items from some data source 
     Items = Enumerable.Select(x => new SelectListItem 
     { 
      Value = x.Id, 
      Text = "item " + x.Id 
     }) 
    }; 
    return View(model); 
} 

दृश्य:

@model MyViewModel 
@Html.ListBoxFor(x => x.SelectedIds, Model.Items) 
संबंधित मुद्दे