MVC 3

2012-08-27 18 views
7

में IEnumerable साथ EditorFor का उपयोग करते हुए मैं एक IEnumerable युक्त तार, सत्यापन के लिए डेटा एनोटेशन का उपयोग कर: MVC 3

[Required(ErrorMessage = "This is required.")] 
[Remote("IsValid", "ControllerName")] 
public IEnumerable<string> MyList { get; set; }  

मैं तो एक संपादक टेम्पलेट के साथ इस का उपयोग कर रहा हूँ।

@Html.EditorFor(m => m.MyList) 

अंत में, मेरे टेम्पलेट इस IEnumarable लेता है और प्रत्येक तत्व के लिए प्रपत्र तत्वों की एक संख्या बनाता है::

@model IEnumerable<string> 
@foreach (var str in Model) 
{ 
    <li> 
     @Html.LabelFor(m => str, "My Label") 
     @Html.TextBoxFor(m => str) 
     @Html.ValidationMessageFor(m => str) 
    </li> 
} 

हालांकि प्रपत्र तत्व ठीक से प्रदर्शित करते हैं यह कैसे मैं इसे अपने ध्यान में रखते हुए कहते हैं , क्या मैं इसे सही तरीके से देख रहा हूं? साथ ही, मैंने देखा है कि यह अब मान्य नहीं है। मैं इसे कैसे हल करूं?

उत्तर

7

आप इसके बारे में "सही" तरीके से जा रहे हैं। (इसमें सही है कि यह काम कर सकता है, मैंने पहले यह किया है) लेकिन प्रमाणीकरण के कारण मुझे लगता है कि यह काम नहीं करता है, यह आपके पास आईनेमरेबल पर सत्यापन है और स्ट्रिंग पर नहीं है। प्रत्येक स्ट्रिंग पर सत्यापन प्राप्त करने के लिए । आप कहते हैं कि

public class LabelString 
{ 
    [Required(ErrorMessage = "This is required.")] 
    public string labelName { get; set; } 
} 

और फिर जहां public IEnumerable<string> MyList { get; set; } है public IEnumerable<LabelString> MyList { get; set; }

है कि आप पाश के लिए में लेबल में से प्रत्येक पर मान्यता देना चाहिए साथ बदलें एक नया मॉडल वस्तु बनाने के लिए होगा।

3

यह गणित नहीं है, इसलिए आपकी समस्या के 1 से अधिक समाधान हैं और कोई सही नहीं है

ने कहा कि, हालांकि, मैं नहीं बल्कि इसे दूसरे तरीके से दृष्टिकोण चाहते हैं:

public class StringsViewModel 
{ 
    IEnumerable<string> myList; 
} 

ध्यान में रखते हुए आप तो

@model StringsViewModel 
@EditorForModel() 

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

आशा है कि इससे मदद मिलती है।

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