我现在有一个视图模型设置为这样:验证嵌套模型
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是另一种模式,看起来是这样的:现在
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复选框布尔型和一个EditorForW/BankInfo的自定义模板。提交后,我们无法弄清楚如何禁用模型所要求的BankInfo验证(例如,即使我们不需要ViewModel上的属性,它仍然在BankInfo上触发val并因此失败悲惨地在任何形式的职位上)。有没有任何标准的方式来处理ViewModel绑定w/nested模型验证?
作为一个说明,即使我们撕裂我们的自定义验证过BankInfo,并把它作为视图模型未修饰的属性,则BankInfo验证仍然踢,即使房地产ISN”不受表格提交的约束。 – antinescience
BankInfo验证启动的原因是默认模型联编程序在完成绑定并验证容器模型本身之前会完全绑定和验证模型的子项。在制作自定义模型绑定器之外,我不确定是否有解决方法。 – rossisdead