2011-09-14 2 views
6

में डिफ़ॉल्ट एएसपी.नेट एमवीसी संदेश ओवरराइड करें मुझे सत्यापन संदेश मिलता है "मान xxx yyy के लिए मान्य नहीं है"। ऐसा तब होता है जब मैं डबल टाइप के लिए गलत मान पोस्ट करता हूं। मुझे नहीं पता कि इसे कैसे बदला जाए।FluentValidation

RuleFor(x => x.Foo) 
    .NotEmpty() 
    .WithMessage("Put your custom message here"); 

और आप संसाधनों के साथ स्थानीय संदेशों उपयोग करना चाहते हैं:

RuleFor(x => x.Foo) 
    .NotEmpty() 
    .WithLocalizedMessage(() => MyLocalizedMessage.FooRequired); 

उत्तर

7

दुर्भाग्य से यह कुछ FluentValidation है कि नहीं है

+0

में परिवर्तित करने का प्रयास करता है क्या आपने इसके बारे में एएसपी.नेट एमवीसी टीम से संपर्क करने का प्रयास किया था? – SiberianGuy

+0

हां, मैंने इसे एमवीसी 2 के पूर्वावलोकन अवधि के दौरान कई बार उठाया, लेकिन यह कभी नहीं बदला गया था। –

+0

आइए इसे एक बार फिर कोशिश करें: http://forums.asp.net/p/1721550/4601626.aspx/1?p=True&t=634518558226229075 – SiberianGuy

0

आप त्रुटि संदेश को अनुकूलित करने के .WithMessage() विधि इस्तेमाल कर सकते हैं ओवरराइड करने की क्षमता - एमवीसी के सत्यापन के लिए विस्तारशीलता मॉडल कुछ स्थानों पर कुछ हद तक सीमित है, और मैं इस विशेष संदेश को ओवरराइड करने का कोई तरीका नहीं ढूंढ पाया।

एक वैकल्पिक दृष्टिकोण जिसका उपयोग आप कर सकते हैं वह है अपने व्यू मॉडल पर दो गुणों को परिभाषित करना - एक स्ट्रिंग के रूप में, और एक शून्य के रूप में डबल। आप एमवीसी बाध्यकारी उद्देश्यों के लिए स्ट्रिंग प्रॉपर्टी का उपयोग करेंगे, और डबल प्रॉपर्टी रूपांतरण करेगी (यदि यह कर सकती है)। इसके बाद आप इसे सत्यापन के लिए उपयोग कर सकते हैं:

public class FooModel { 
    public string Foo { get; set; } 

    public double? ConvertedFoo { 
     get { 
      double d; 
      if(double.TryParse(Foo, out d)) { 
      return d; 
      } 
      return null; 
     } 
    } 
} 


public class FooValidator : AbstractValidator<FooModel> { 
    public FooValidator() { 
     RuleFor(x => x.ConvertedFoo).NotNull(); 
     RuleFor(x => x.ConvertedFoo).GreaterThan(0).When(x => x.ConvertedFoo != null); 
    } 
} 
+1

यह काम नहीं करता है। त्रुटि तब प्रकट होती है जब ASP.NET स्ट्रिंग को डबल – SiberianGuy