Şu anda gibi bir ViewModel kurulum var:doğrulanıyor İçiçe Modelleri
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; }
}
... bu durumda, "RequiredIfOtherPropertyIsTrue" hemen hemen, dediğini yapar bir doğrulayıcı: Başka özelliği ise denetler gerçek (bu durumda, bizim boolean depozito talep edilmektedir olmadığını gösteren) ve BankInfo şuna benzer başka modelidir: bizim 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; }
}
Şimdi, bizim DepositRequired bağlı bir onay kutusu boolean ve bir EditorFor w/BankInfo için özel bir şablon. Sunumun ardından, BankInfo IF numaralı telefon hattında doğrulamayı devre dışı bırakmanın, model tarafından gerekmediğini bulmakta sorun yaşıyoruz (örn., ViewModel'de özellik gerektirmese bile, yine de BankInfo'da val'i tetikliyor ve bu nedenle başarısız oluyor. sefil herhangi bir formda). ViewModel bağlamada iç içe model doğrulama işleminin standart bir yolu var mı? doğrulama yerleşik
, BankInfo doğrulama hala 'bile mülkiyet ISN'nin yer tekmeler Form gönderimine bağlı olmak. – antinescience
BankInfo'nun onaylama tekerinin nedeni, varsayılan model bağlayıcının, kapsayıcı modelin bağlayıcısını ve geçerliliğini tamamlamadan önce, modelin çocuklarını tamamıyla doğrulayacağı ve doğrulayacağıdır. Bunun dışında özel bir model ciltleme yapmak için bir geçici çözüm olduğundan emin değilim. [FluentValidation] için – rossisdead