मैं ValidationAttribute की तरह है:ASP.NET MVC: ValidationAttribute और स्थानीय त्रुटिसंदेश
public class Username : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return RegExp.Validate(RegExpLib.Username,value.ToString());
}
}
..और इस तरह इसे का उपयोग:
public class AccountSignIn
{
[Username(ErrorMessageResourceName ="txtUsername",ErrorMessageResourceType=typeof(SignIn))]
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
}
साइन इन करें App_GlobalResources में संसाधन फ़ाइल है और "txtUsername" - संसाधन फ़ाइल में स्ट्रिंग नाम है।
समस्या: त्रुटि संदेश नहीं दिखाए जाते हैं।
प्रश्न: यदि मेरे पास वेबसाइट पर कुछ भाषाएं हैं तो त्रुटि संदेश कैसे सेट करें।
एक और जानकारी:
मैं दृश्य से सक्षम पहुँच SignIn.txtUsername
या परियोजना में किसी भी फाइल कर रहा हूँ। नियंत्रक से
ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
रूप में अच्छी तरह ठीक काम करता है .. मैं ValidationAttribute अंदर त्रुटिसंदेश असाइन कर सकते हैं, लेकिन मिला दूसरा सत्यापन के बाद त्रुटि की कोशिश ... अगर मैं जगह इस तरह की जांच -
if(ErrorMessage != Resources.SignIn.txtUsername)
ErrorMessage = Resources.SignIn.txtUsername;
मैं के बाद त्रुटि है मैं दूसरी भाषा में स्विच करता हूं - त्रुटि संदेश केवल एक बार असाइन किया जा सकता है।
कृपया सलाह दें कि मैं इसे कैसे हल कर सकता हूं।
अग्रिम धन्यवाद।
जैसा कि मैंने लिखा है, मैं वैश्विक संसाधनों का उपयोग कर रहा हूं "साइनइन App_GlobalResources पर संसाधन फ़ाइल है" –
दुर्भाग्यवश, आप App_GlobalResources सार्वजनिक में संसाधन नहीं बना सकते हैं। आपको इसके बजाय "Properties" फ़ोल्डर से संसाधन फ़ाइल का उपयोग करना होगा - बाएं मेनू से प्रोजेक्ट पर राइट क्लिक करें, संसाधनों का चयन करें और "इस प्रोजेक्ट ..." पर क्लिक करें। "Resources.resx" नाम की डिफ़ॉल्ट संसाधन फ़ाइल बनाई जाएगी। आप इसका नाम बदल सकते हैं (यानी "मॉडलइरर्स") और कोड में उपयोग करें: [आवश्यक (ErrorMessageResourceName = "password_Required", ErrorMessageResourceType = typeof (Properties.ModelErrors))] – Feryt
हाँ, यह सच है। डेटा एन्क्रिप्शन का उपयोग ASP.NET के बाहर किया जाना है, इसलिए उन्हें App_XxxResources के बारे में कुछ भी पता नहीं है और केवल पारंपरिक संसाधन फ़ाइलों के साथ काम करते हैं। –