मैं वर्तमान में इस तरह के रूप एक ViewModel सेटअप:सत्यापित किया जा रहा नेस्टेड मॉडल
public class OurViewModel
{
public OurViewModel() { }
[Required]
public int LeadID { get; set; }
[Required]
public int Rate { get; set; }
[Required]
public bool DepositRequired { get; set; }
[RequiredIfOtherPropertyIsTrue("DepositRequired")]
public BankInfo { get; set; }
}
... इस मामले में, "RequiredIfOtherPropertyIsTrue" एक सत्यापनकर्ता कि काफी यह क्या कहते हैं करता है: अगर एक और संपत्ति है देखने के लिए जाँच करता है सच (इस मामले में, हमारे बूलियन का संकेत है या नहीं, एक जमा की आवश्यकता होती है), और BankInfo एक और मॉडल है कि कुछ इस तरह दिखता है: हमारे ViewModel में,
public class BankInfo
{
public enum AccountTypeEnum
{
CHECKING,
SAVINGS
}
public BankAccountInfo() { }
[DisplayName("Account Number")]
[Required(ErrorMessage = "You must provide a valid bank account number")]
public String AccountNumber { get; set; }
[DisplayName("Bank Routing Number")]
[Required(ErrorMessage = "You must provide a valid routing number")]
[StringLength(9, MinimumLength = 9, ErrorMessage = "Your bank routing number must be exactly 9 digits")]
public String ABANumber { get; set; }
[DisplayName("Bank Account Type")]
[Required]
public AccountTypeEnum AccountType { get; set; }
[DisplayName("Name on Bank Account")]
[Required(ErrorMessage = "You must provide the name on your bank account")]
public String AccountName { get; set; }
}
अब, हम एक चेकबॉक्स हमारे DepositRequired करने के लिए बाध्य है बूलियन, और एक संपादक के लिए/बैंकइन्फो के लिए एक कस्टम टेम्पलेट। सबमिशन पर, हमें यह पता लगाने में परेशानी हो रही है कि बैंकइन्फो IF पर सत्यापन को अक्षम करने के लिए मॉडल की आवश्यकता नहीं है (उदाहरण के लिए, अगर हमें व्यूमोडेल पर संपत्ति की आवश्यकता नहीं है, तो यह अभी भी बैंकइन्फो पर वैल्यू ट्रिगर कर रहा है और इसलिए विफल रहा है किसी भी रूप में पोस्ट पर दुखी)। क्या ViewModel बांध पर w/नेस्टेड मॉडल सत्यापन को निपटने का कोई मानक तरीका है?
एक नोट के रूप में, हम BankInfo के बंद हमारे कस्टम सत्यापनकर्ता चीर और ViewModel पर एक असज्जित संपत्ति के रूप में छोड़ भले ही, BankInfo सत्यापन अभी भी भले ही संपत्ति isn में किक ' फॉर्म जमा करने से बाध्य नहीं है। – antinescience
बैंकइन्फो की सत्यापन में आने का कारण यह है कि डिफॉल्ट मॉडल बाइंडर पूरी तरह से बाध्यकारी और कंटेनर मॉडल को मान्य करने से पहले मॉडल के बच्चों को पूरी तरह से बांध देगा और मान्य करेगा। मुझे यकीन नहीं है कि कस्टम मॉडल बाइंडर बनाने के बाहर इस के लिए एक कामकाज है। – rossisdead