मैं वर्तमान में एमवीसी सत्यापन के माध्यम से काम करने की कोशिश कर रहा हूं, और कुछ समस्याओं के खिलाफ आ रहा हूं जहां किसी अन्य क्षेत्र के मूल्य के आधार पर एक फ़ील्ड आवश्यक है। एक उदाहरण नीचे है (कि मुझे अभी तक पता नहीं लगाया गया है) - यदि भुगतान विधि == "जांचें", तो चेकनाम की आवश्यकता होनी चाहिए, अन्यथा इसे छोड़ दिया जा सकता है।Asp.Net एमवीसी प्रमाणीकरण - निर्भर फ़ील्ड
[Required(ErrorMessage = "Payment Method must be selected")]
public override string PaymentMethod
{ get; set; }
[Required(ErrorMessage = "ChequeName is required")]
public override string ChequeName
{ get; set; }
मैं के लिए [आवश्यक] System.ComponentModel.DataAnnotations उपयोग कर रहा हूँ, और यह भी कोशिश करते हैं और इस काम के पाने के लिए एक ValidationAttribute विस्तार किया है, लेकिन मैं एक चर के माध्यम से सत्यापन करने के लिए पारित नहीं हो सकता (नीचे विस्तार)
public class JEPaymentDetailRequired : ValidationAttribute
{
public string PaymentSelected { get; set; }
public string PaymentType { get; set; }
public override bool IsValid(object value)
{
if (PaymentSelected != PaymentType)
return true;
var stringDetail = (string) value;
if (stringDetail.Length == 0)
return false;
return true;
}
}
कार्यान्वयन:
[JEPaymentDetailRequired(PaymentSelected = PaymentMethod, PaymentType = "Cheque", ErrorMessage = "Cheque name must be completed when payment type of cheque")]
किसी को भी मान्यता की इस तरह के साथ अनुभव हुआ है? क्या यह नियंत्रक में लिखना बेहतर होगा?
आपकी मदद के लिए धन्यवाद।
दूसरे विचार पर ... आप भुगतान चयन = भुगतान विधि कैसे सेट कर सकते हैं? आपको एक त्रुटि मिलनी चाहिए क्योंकि PaymentMethod निरंतर अभिव्यक्ति नहीं है। – Min
हाय मिन, आप सही हैं। मैंने सोचा कि मैं इसे इस तरह से करने में सक्षम हो सकता हूं लेकिन यह काम नहीं करता है। मैं सिर्फ यह दिखाना चाहता था कि मैंने क्या प्रयास किया था, लेकिन यह भी टिप्पणी की कि यह मुझे चर के माध्यम से पारित करने की अनुमति नहीं देगा। –