जाँच शामिल नहीं मैंASP.MVC3 ModelState.IsValid RemoteAttribute
public class EditModel
{
[Remote("IsNameAvailable", "Home", ErrorMessage = "Name is in use.")]
[Display(Name = "Name")]
public string Name{ get; set; }
}
के रूप में और घर नियंत्रक
public JsonResult IsNameAvailable(string name)
{
if (duplicate)
return Json(false, JsonRequestBehavior.AllowGet);
else
return Json(true, JsonRequestBehavior.AllowGet);
}
में एक चर को परिभाषित लेकिन जब मैं सहेजें कार्रवाई में ModelState.IsValid जाँच, यह हमेशा सत्य लौटाता है, यहां तक कि मैं दृश्य पर त्रुटि संदेश प्रदर्शन देख सकता हूं।
public ActionResult Save(EditModel editModel)
{
if (!ModelState.IsValid)
{
//Return to view and display error in view
return View("Home", editModel);
}
//Input data is valid and save record
Repository.Save(editModel.Name);
}
[समस्या]
कैसे कर सकते हैं भी ModelState जांच एक मॉडल में RemoteAttribure द्वारा मान्यता नियम?
आपके सुझाव के लिए धन्यवाद! मामला यह है कि मेरे पास ऐसे कई मॉडल हैं और मैं कोड को कम करने के लिए सबसे अच्छा विकल्प ढूंढना चाहता हूं। पहले और दूसरे विकल्पों को कोड की आवश्यकता है जो कि दूरस्थ विशेषता का उपयोग करने वाले मॉडल की संख्या पर निर्भर करता है। क्या आप अंतिम विकल्प के बारे में अधिक बता सकते हैं? – daniel
रिमोटएट्रिब्यूट की IsValid विधि वास्तव में सर्वरसाइड कहा जाता है। यदि आप .NET decompiler के साथ इस विधि को देखते हैं, तो आप देखेंगे कि यह सभी विधि "सत्य लौटती है"। RemoteAttribute से प्राप्त अपनी खुद की विशेषता बनाएं और उस ISValid() विधि में कुछ वास्तविक सत्यापन तर्क रखें। उदाहरण के लिए, ValidationMethod कहें, आप अपनी खुद की विशेषता पर एक अतिरिक्त संपत्ति बना सकते हैं। विशेषता का उपयोग करते समय, आप उस विधि के साथ पास कर सकते हैं जिसे सत्यापन करना चाहिए। और आपकी IsValid() विधि में, आप उस सत्यापन विधि को कॉल कर सकते हैं। –