我知道我可以通过Bind属性排除或包括对属性的绑定,但是我不确定是否可以通过编程方式做到这一点(无需创建单独的ViewModel)。我想要实现此目的的原因是因为我有一个密码字段,仅当用户在其字段中输入值时才应包括在内。
用途:
if (string.IsNullOrEmpty(model.Password))
{
ModelState.Remove("Password");
}
将viewModel中的Password属性设置为可选,换句话说,不需要注释。通常,当值为空/ null时,将通过所有其他验证(RequiredAttribute除外)。
class MyViewModel
{
[MinLength(6)]
[HasUpper(1)]
[HasLower(1)]
// [Required] remove this line
public String Password { get; set; }
}
然后在您的控制器操作测试中,如果Password属性为null或为空,则>
if (!String.IsNullOrEmpty(model.Password))
{
// the user has entered value in its field
}