ड्रॉपडाउन सूची उत्पन्न करने के लिए आपको अपने दृश्य मॉडल पर 2 गुणों की आवश्यकता है: चयनित मूल्य को बांधने के लिए एक स्केलर संपत्ति और संग्रह संपत्ति जिसमें ड्रॉपडाउन में दिखाने के लिए आइटम शामिल होंगे।
public class DropDownListViewModel
{
public string SelectedValue { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
और फिर अपने मुख्य दृश्य मॉडल पर इस प्रकार का एक संपत्ति है:
तो तुम एक दृश्य के मॉडल को परिभाषित कर सकता है
public DropDownListViewModel Foo { get; set; }
अब आप इसके लिए एक कस्टम संपादक टेम्पलेट हो सकता था प्रकार (~/Views/Shared/EditorTemplates/DropDownListViewModel.ascx
):
<%@ Control
Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DropDownListViewModel>"
%>
<%= Html.DropDownListFor(x => x.SelectedValue, Model.Items) %>
और फिर अपने मुख्य दृश्य में:
<%= Html.EditorFor(x => x.Foo) %>
अब सभी अब सिर्फ़ अपने नियंत्रक कार्रवाई इसी मूल्यों के साथ Foo
संपत्ति को भरने के लिए मुख्य दृश्य प्रतिपादन है। हार्डकोड किया जा सकता है, एक भंडार या जो कुछ भी से आते हैं। यह वास्तव में कोई फर्क नहीं पड़ता।
<%= Html.DropDownList(
"",
new SelectList(
new[]
{
new { Value = "true", Text = "Yes" },
new { Value = "false", Text = "No" },
},
"Value",
"Text",
Model
)
) %>
और उसके बाद:
दूसरी ओर अगर आप पूर्व में मान आप संपादक टेम्पलेट में उन्हें हार्डकोड सकता है (~/Views/Shared/EditorTemplates/YesNoDropDown.ascx
) जानता था
<%= Html.EditorFor(x => x.IsActive, "YesNoDropDown") %>
या IsActive संपत्ति सजाने द्वारा आपके दृश्य मॉडल पर:
[UIHint("YesNoDropDown")]
public bool IsActive { get; set; }
और फिर:
<%= Html.EditorFor(x => x.IsActive) %>
समाधान के लिए धन्यवाद। मुझे संपादक टेम्पलेट में एक पहचानकर्ता अपेक्षित अपवाद प्राप्त हो रहा है .ascx पेज ... नए [] – ZVenue
@ZVenue के पास, अभी भी इस समस्या के साथ समस्याएं हैं? –
कोई और समस्या नहीं .. आपकी मदद के लिए धन्यवाद .. आपका संशोधित समाधान .. http://stackoverflow.com/questions/9568111/problems-converting-editorfor-to-dropdownlist – ZVenue