2010-08-02 5 views
7

मैं CustomValidation जोड़ने और इसेमैं एएसपी.नेट एमवीसी कस्टम सत्यापन में त्रुटि सदस्य कुंजी कैसे निर्दिष्ट करूं?

Html.ValidationMessageFor (एम => m.SubleaseCompany)

[CustomValidation(typeof(CreateSpaceModelValidation), "ValidateCreateSpaceModel")] 
public class CreateSpaceModel 
{ 
    public Building Building { get; set; } 
    public Space Space { get; set; } 

    public string SubleaseCompany { get; set; } 
} 

public class CreateSpaceModelValidation 
{ 
    public static ValidationResult ValidateCreateSpaceModel(CreateSpaceModel model) 
    { 
     return new ValidationResult("You should specify Sublease Contact", new[] { "SubleaseCompany" }).; 
    } 
} 

मैं ValidationResult निर्माता के लिए दूसरा तर्क का उपयोग कर रहा (memberNames के लिए वापस त्रुटि बनाने के लिए कोशिश कर रहा हूँ) लेकिन यह काम नहीं लग रहा है।

+0

इस पर आप किस मार्ग को समाप्त कर चुके हैं? – Aaron

उत्तर

8

ऐसा लगता है कि एमवीसी टीम ने सदस्य नाम पैरामीटर के लिए कार्यक्षमता कभी लागू नहीं की है। .... http://devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

कुछ स्थितियों में, से लागू निम्न देखें आप ValidationResult के दूसरे निर्माता अधिभार कि सदस्य नामों में से एक IEnumerable में ले जाता है का उपयोग करने के लिए परीक्षा हो सकती है। उदाहरण के लिए, आप फैसला कर सकते हैं कि आप दोनों क्षेत्रों तुलना में किया जा रहा है पर त्रुटि संदेश प्रदर्शित करना चाहते हैं, तो आप करने के लिए कोड बदलने के इस:

return new ValidationResult(
    FormatErrorMessage(validationContext.DisplayName), 

नई [] {validationContext.MemberName, OtherProperty});

यदि आप अपना कोड चलाते हैं, तो आपको बिल्कुल कोई अंतर नहीं मिलेगा। यह है क्योंकि यद्यपि यह अधिभार है और वर्तमान में संभवतः .NET फ्रेमवर्क में उपयोग किया जाता है, एमवीसी ढांचे पूरी तरह से प्रमाणीकरणResult.MemberNames को अनदेखा करता है।

संबंधित मुद्दे