समस्याकैसे एक सूची
मैं क्षेत्रों है कि उपयोगकर्ता संपादित कर सकते हैं की एक सूची है में एक आइटम की एक ModelState कुंजी प्राप्त करने के लिए। जब मॉडल सबमिट किया जाता है तो मैं यह जांचना चाहता हूं कि यह आइटम मान्य हैं या नहीं। मैं डेटा नोटेशन का उपयोग नहीं कर सकता क्योंकि प्रत्येक फ़ील्ड में एक अलग सत्यापन प्रक्रिया होती है जिसे मैं रनटाइम तक नहीं जानता। अगर सत्यापन विफल रहता है तो मैं ModelState.AddModelError(string key, string error)
का उपयोग करता हूं जहां कुंजी उस HTML तत्व का नाम है जिसे आप त्रुटि संदेश जोड़ना चाहते हैं। चूंकि खेतों की एक सूची है जो नाम है कि रेजर एचटीएमएल आइटम के लिए उत्पन्न करता है Fields[0].DisplayName
जैसा है। मेरा प्रश्न दृश्य मॉडल से जेनरेट किए गए एचटीएमएल नाम की कुंजी प्राप्त करने का कोई तरीका या तरीका है?
का प्रयास किया गया समाधान
मैंने कोशिश की कोई भाग्य के साथ कुंजी के लिए toString()
विधि। मैंने HtmlHelper
कक्षा को भी देखा लेकिन मुझे कोई उपयोगी तरीका नहीं मिला।
कोड स्निपेट
देखें मॉडल
public class CreateFieldsModel
{
public TemplateCreateFieldsModel()
{
FreeFields = new List<FieldModel>();
}
[HiddenInput(DisplayValue=false)]
public int ID { get; set; }
public IList<TemplateFieldModel> FreeFields { get; set; }
public class TemplateFieldModel
{
[Display(Name="Dispay Name")]
public string DisplayName { get; set; }
[Required]
[Display(Name="Field")]
public int FieldTypeID { get; set; }
}
}
नियंत्रक
public ActionResult CreateFields(CreateFieldsModel model)
{
if (!ModelState.IsValid)
{
//Where do I get the key from the view model?
ModelState.AddModelError(model.FreeFields[0], "Test Error");
return View(model);
}
}
यह अच्छा है लेकिन अभी एक और पोस्ट मिली है जो इस तर्क को एक अच्छी विस्तार विधि में लपेटती है: http://stackoverflow.com/a/12689563/1825109 – Michael12345