如果值被模型绑定器绑定,则应用所需属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果值被模型绑定器绑定,则应用所需属性相关的知识,希望对你有一定的参考价值。

我必须处理以下验证场景。

  1. 如果某些条件被满足,我们就会显示文本框,这应该是强制性的
  2. 如果不符合要求,该属性的值应该是可选的。

模型看起来有点像这样。

public class Setting

    [Required]
    public string Domain  get; set; 

能否以某种方式区分字段值被省略或没有绑定的情况?因为据我所知,如果值被省略或没有绑定,它的值将是一个默认值(字符串)。在这种情况下,我无法确定是否应该提供域。

答案

如果你有可能需要或不需要的情况,你最好的选择可能是让你的 Setting 继承 IValidatableObject 并实施自己的 Validate() 方法。做任何你需要的检查,看看是否需要,然后做一个 yield return new ValidationResult("Description", new[] nameof(Domain ) ) 来解释为什么它是无效的。

如果你不能在你的内心做出这样的判断 Settings 类,那么你可能需要在你的控制器动作中进行,并使用类似于 ModelState.AddModelError("Description", nameof(model.Domain))); 继而检查 ModelState.IsValid 来查看是否应该踢出动作并返回一个重定向视图。

以上是关于如果值被模型绑定器绑定,则应用所需属性的主要内容,如果未能解决你的问题,请参考以下文章