如何根据多种条件制作所需的房产?

med*_*eda 6 validation asp.net-mvc requiredfieldvalidator

我有一对单选按钮列表(是/否):

Q1.(Y)(N) 
Q2.(Y)(N) 
Q3.(Y)(N) 
Q4.(Y)(N)
Run Code Online (Sandbox Code Playgroud)

我的模型中有一个属性 public string MedicalExplanation { get; set; }

我的目标是如果任何单选按钮设置为true,则需要解释.

我的第一次尝试是使用,[Required]但它不处理条件.

然后我决定使用像MVC Foolproof Validation这样的第三方工具我用它如下: [RequiredIf("Q1", true, ErrorMessage = "You must explain any \"Yes\" answers!")]

现在问题是如果检查了其他Q2,Q3,Q4中的任何一个,我不知道如何使它成为必需.

请指教

ata*_*ati 15

在您的ViewModel中,创建一个bool propery,如下所示:

public bool IsMedicalExplanationRequired
{
   get
   {
       return Q1 || Q2 || Q3 || Q4;
   }
}
Run Code Online (Sandbox Code Playgroud)

然后,使用您的RequiredIf属性,如下所示:

[RequiredIf("IsMedicalExplanationRequired", true, ErrorMessage = "You must explain any \"Yes\" answers!")]
Run Code Online (Sandbox Code Playgroud)

更新:

如果您的Q1-Q4属性属于类型bool?,只需更改IsMedicalExplanationRequired属性,如下所示:

public bool IsMedicalExplanationRequired
{
   get
   {
       return Q1.GetValueOrDefault() || Q2.GetValueOrDefault() || Q3.GetValueOrDefault() || Q4.GetValueOrDefault();
   }
}
Run Code Online (Sandbox Code Playgroud)