मैं एक कस्टम सत्यापन विशेषता बनाना चाहता हूं, जिसमें मैं अपनी संपत्ति के मूल्य की तुलना अपने मॉडल वर्ग में किसी अन्य संपत्ति के मूल्य के साथ करना चाहता हूं। उदाहरण के लिए मैं अपने मॉडल कक्षा में है:कस्टम सत्यापन विशेषता कैसे बनाएं?
...
public string SourceCity { get; set; }
public string DestinationCity { get; set; }
और मैं एक कस्टम बनाना चाहते हैं इस तरह इसका इस्तेमाल करने का श्रेय:
[Custom("SourceCity", ErrorMessage = "the source and destination should not be equal")]
public string DestinationCity { get; set; }
//this wil lcompare SourceCity with DestinationCity
मैं वहाँ कैसे मिल सकता है?
public class CustomAttribute : ValidationAttribute
{
private readonly string _other;
public CustomAttribute(string other)
{
_other = other;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var property = validationContext.ObjectType.GetProperty(_other);
if (property == null)
{
return new ValidationResult(
string.Format("Unknown property: {0}", _other)
);
}
var otherValue = property.GetValue(validationContext.ObjectInstance, null);
// at this stage you have "value" and "otherValue" pointing
// to the value of the property on which this attribute
// is applied and the value of the other property respectively
// => you could do some checks
if (!object.Equals(value, otherValue))
{
// here we are verifying whether the 2 values are equal
// but you could do any custom validation you like
return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
}
return null;
}
}
http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx – Joe
@ जो, यह एएसपी.नेट एमवीसी 2 के लिए है और अब एमवीसी 3 पर लागू नहीं होता है। यह ब्लॉग भी पोस्ट यह नहीं बताता है कि वैधकर्ता में एक निर्भर संपत्ति मूल्य कैसे प्राप्त किया जाए, जो ओपी यहां हासिल करने की कोशिश कर रहा है। –