2012-01-13 14 views
7

में ऑप्टग्रुप कार्यक्षमता के लिए एक सहायक कोड का उपभोग करना मेरे पास हेल्पर्स के साथ काम करने का अनुभव नहीं है इसलिए मैं हाथ में एक कोड का उपयोग करने में थोड़ा फंस गया हूं।Asp.net एमवीसी

मेरी आवश्यकता सरल है और मुझे केवल DropDownListFor एक्सटेंशन विधि में ऑप्टग्रुप कार्यक्षमता की आवश्यकता है। खोज करते समय, मैं इस Answer पर आया और इसे कॉपी किया है क्योंकि यह MyExtensionClass.cs नाम की फ़ाइल में है।

लेकिन, मुझे नहीं पता कि इसका उपयोग कैसे करें या इसमें परिभाषित विस्तार विधि को कॉल करें। कृपया मुझे बताएं कि मैं अपनी सूची के साथ इसका उपयोग कैसे कर सकता हूं।

अभी, एक चयन सूची के लिए नियंत्रक कोड निम्नलिखित है जिसके लिए मैं विस्तार विधियों का उपयोग करना चाहता हूं।

ViewBag.ParentCategoryId = new SelectList(db.Categories, "Id", "Name"); 

और यह मेरे विचार कोड

@Html.DropDownListFor(model => model.Product.CategoryId, 
    (IEnumerable<SelectListItem>)ViewBag.CategoryId, "---Choose Category---", 
     new { @class = "required" }) 

कृपया मेरी मदद optgroup साथ विस्तार विधि को यह उन्नयन है।

+1

अब [ड्रॉपडाउन सूची में ऑप्टग्रुप के लिए एमवीसी समर्थन यह जांचें] (http://www.jquery2dotnet.com/2014/01/html5-dropdownlist-optgroup-tag-in-mvc.html) – Sender

उत्तर

19

हम ऑप्टग्रुप ड्रॉपडाउन के लिए सर्ज जैब के सहायक का उपयोग करते हैं। यहाँ एक नमूना है:

viewmodel:

public class OurViewModel 
{ 
    public int? TypeId { get; set; } 
    public IEnumerable<GroupedSelectListItem> GroupedTypeOptions { get; set; } 
} 

नियंत्रक:

public ActionResult Add() 
{ 
    var model = new OurViewModel 
    { 
     // fill with initial values 
    }; 
    PutTypeDropDownInto(model); 
    return View(model); 
} 

[NonAction] 
private void PutTypeDropDownInto(OurViewModel model) 
{ 
    model.GroupedTypeOptions = _repos.GetTypes() 
     .OrderBy(t => t.Category.EnglishName).ThenBy(t => t.EnglishName) 
     .Select(t => new GroupedSelectListItem 
     { 
      GroupKey = t.Category.RevisionId.ToString(), 
      GroupName = t.Category.EnglishName, 
      Text = t.EnglishName, 
      Value = t.RevisionId.ToString() 
     } 
    ); 
} 

दृश्य

@Html.DropDownGroupListFor(m => m.TypeId, Model.GroupedTypeOptions, 
    "[Select a type]") 

ध्यान दें कि आप नियमित चयनसूची का उपयोग नहीं कर सकते हैं। आपको अपने GroupedSelectListItem क्लास के संग्रह का उपयोग करना होगा। इसके अलावा, हमारा समाधान व्यूबैग का उपयोग नहीं करता है। ड्रॉपडाउन सूची दृढ़ता से व्यूमोडेल पर टाइप की जाती है।

अद्यतन

अपने ध्यान में रखते हुए काम करने के लिए एचटीएमएल सहायक पाने के लिए, दृश्य यह पता लगाने के लिए सक्षम होने की जरूरत। आप अपने MyExtensionClass.cs नाम स्थान के साथ दृश्य के शीर्ष पर एक @using निर्देश जोड़ सकते हैं या तो, या दृश्य-विशिष्ट web.config को नाम स्थान जोड़ने के लिए, तो जैसे:

<pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    <namespaces> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="Microsoft.Web.Mvc" /> 
    <add namespace="Namespace.For.MyExtensionClass" /> 
    </namespaces> 
</pages> 
+0

धन्यवाद दोस्त :-) –

3

यह एएसपी को जोड़ा गया है। संस्करण 5.2 पर नेट एमवीसी!

संपत्ति Group SelectListItem में आप अब optgroup समूह के आधार पर तत्वों उत्पन्न वस्तुओं की सूची में शामिल प्रत्येक आइटम

Html.DropDownList() और DropDownListFor() के लिए एक समूह निर्दिष्ट करने के लिए अनुमति देता है।

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