मैं कस्टम मॉडल बांधने की मशीन का उपयोग कर रहा है कि इस तरह दिखता है:स्थापना ModelState मूल्यों
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext == null)
{
throw new ArgumentNullException("controllerContext");
}
if (bindingContext == null)
{
throw new ArgumentNullException("bindingContext");
}
BaseContentObject obj = (BaseContentObject)base.BindModel(controllerContext, bindingContext);
if(string.IsNullOrWhiteSpace(obj.Slug))
{
// creating new object
obj.Created = obj.Modified = DateTime.Now;
obj.ModifiedBy = obj.CreatedBy = controllerContext.HttpContext.User.Identity.Name;
// slug is not provided thru UI, derivate it from Title; property setter removes chars that are not allowed
obj.Slug = obj.Title;
ModelStateDictionary modelStateDictionary = bindingContext.ModelState;
modelStateDictionary.SetModelValue("Slug", new ValueProviderResult(obj.Slug, obj.Slug, null));
...
जब मैं इस बांधने की मशीन से वापस नियंत्रक कार्रवाई में मिलता है, अपने व्यवसाय वस्तु है कि क्रिया के पैरामीटर के रूप में प्रदान किया गया है सही ढंग से बदला गया है (लाइन obj.Created = .... काम)।
हालांकि, मॉडलस्टेट अपडेट नहीं किया गया है। मुझे यह पता है क्योंकि मुझे अपने व्यापार ऑब्जेक्ट की स्लग संपत्ति पर आवश्यक है और हालांकि मैंने अपने कस्टम मॉडल बाइंडर में मॉडलस्टेट डिक्शनरी को बदल दिया है, इसके लिए एक स्लग प्रदान करना (जैसा कि आप ऊपर देख सकते हैं), मॉडलस्टेट.इस्वालिड अभी भी झूठा है।
यदि मैंने डीबग सत्र में अपनी वॉच विंडो में मॉडलस्टेट ["स्लग"] रखा है, तो यह कहता है कि इसमें त्रुटियां हैं (1), तो जाहिर है कि यह खाली है और इस तरह विफल रहता है।
मैं कस्टम मॉडल बाइंडर कोड के अंदर मॉडलस्टेट को सही ढंग से कैसे बदल सकता हूं?
आपका समाधान stackoverflow पर चिपचिपा होने की जरूरत है। मैं खोज और प्रयोग कर रहा हूं जब तक कि मुझे यह तुम्हारा नहीं मिला। मैं आपको गारंटी देता हूं, इस चाल के बारे में बहुत से लोग नहीं जानते हैं। आपने मेरे दिन बचाए! धन्यवाद! – Stack0verflow
मैंने आपके समाधान की कोशिश की, और यह मेरी स्थिति के लिए काम किया। क्या आप http://stackoverflow.com/questions/23145780/asp-net-mvc-4-how-to-validate-my-model-in-a-custom-model-binder पर मेरे प्रश्न पर एक नज़र डाल सकते हैं? धन्यवाद! – Stack0verflow