2011-09-29 9 views
9

किसी भी विचार क्यों निम्नलिखित dropdownlist प्रकार int ("शीर्षक" नीचे दिए गए क्षेत्र) के रूप में आवश्यक फ़ील्ड के साथ मान्य नहीं होगा?MVC3 DropDownList [आवश्यक] प्रकार int के रूप में वर्ग क्षेत्र के साथ मान्य नहीं?

[Required]    // This works! 
    [Display(Name = "Name")] 
    public string Name { get; set; } 

    [Required]    // This doesn't work 
    [Display(Name = "Title")] 
    public int TitleId { get; set; } 



    <div class="editor-label"> 
     @Html.LabelFor(model => model.Name, "Name") 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Name) 
     @Html.ValidationMessageFor(model => model.Name, "This can't be blank!") 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.TitleId, "Title") 
    </div> 
    <div class="editor-field"> 
     @Html.DropDownListFor(model => model.TitleId, (SelectList)ViewBag.TitleId, String.Empty) 
     @Html.ValidationMessageFor(model => model.TitleId) 
    </div> 

enter image description here

+0

आप अपने डेटा पोस्ट करते हैं, एक मूल्य सौंपा है TitleId करता है? –

+0

यदि int है? अभी भी काम नहीं कर रहा है, हो सकता है कि आप अपने ड्रॉपडाउन के लिए डिफ़ॉल्ट मान निर्धारित करें? यानी: (0, "सभी रिकॉर्ड") एक शून्य मूल्य के बजाय? – Iridio

+0

नहीं जाना ... मैं इसे स्थापित करने के लिए "का चयन करें Me-" और दुर्भाग्य से काम नहीं किया। – JaJ

उत्तर

21

के बजाय int? का उपयोग करें। (अर्थात दोनों अपने मामले में TitleId कर रहे हैं।)

इस प्रयास करें:

@Html.DropDownListFor(model => 
    model.TitleId, (SelectList)ViewBag.TitleIdList, String.Empty) 

अपने selectList TitleIdList तदनुसार नाम दिया साथ।

+0

$$$$$ पोस्ट के लिए धन्यवाद! वह यह था! – JaJ

3

[Required] केवल व्यर्थ वस्तुओं और पूर्णांक के लिए काम करता है व्यर्थ नहीं हो सकता। this work item, क्लाइंट-साइड सत्यापन टूट जाता है जब ViewBag में selectList सवाल में क्षेत्र के रूप में एक ही नाम का उपयोग करता है के अनुसार int

+0

नहीं जाना! यह विचित्र है। मुझे क्या परेशान है कि मेरे पास एक और ड्रॉपडाउनलिस्ट है जो टाइप int: [आवश्यक] [प्रदर्शन (नाम = "ऑर्डर आईडी")] सार्वजनिक Nullable ऑर्डर आईडी {प्राप्त करें; सेट; } और मान्यता यह फैल जाती है अगर यह खाली है ("OrderID")। लेकिन वह मान ("ऑर्डरआईडी") मेरे ऑब्जेक्ट बाइंडिंग मॉडल (डेटाबेस) में शून्य है जबकि डेटाबेस में "शीर्षक" शून्य नहीं है। यह एकमात्र अंतर है, जब तक कि मुझे एक नया दृश्य उत्पन्न करने की आवश्यकता नहीं है क्योंकि मैंने उस प्रकार को int में बदल दिया है? कोई अन्य विचार? – JaJ

+0

शायद आप [डेटा एनोटेशन एक्सटेंशन से न्यूनतम विशेषता] का उपयोग कर सकते हैं (http://dataannotationsextensions.org/Min/Create)? – Panos

1

वरना इस के साथ प्रयास करें। अपने site.css फ़ाइल में नीचे दिए गए कोड को जोड़े

select.input-validation-error { 
    /*border: 1px solid #e80c4d;*/ 
    /*Other styles*/ 
} 

यह, लाल के रूप में सीमा रंग ड्रॉप डाउन दिखाएगा जब यह खाली है।

और देखें पेज में:

@Html.DropDownListFor(model => model.TitleID, Model.TitleIDList, "-- Select --", new { @class = "dropdownlist" }) @Html.ValidationMessageFor(model => model.TitleID, "This can't be blank") 
संबंधित मुद्दे