如果值被模型绑定器绑定,则应用所需属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果值被模型绑定器绑定,则应用所需属性相关的知识,希望对你有一定的参考价值。
我必须处理以下验证场景。
- 如果某些条件被满足,我们就会显示文本框,这应该是强制性的
- 如果不符合要求,该属性的值应该是可选的。
模型看起来有点像这样。
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
来查看是否应该踢出动作并返回一个重定向视图。
以上是关于如果值被模型绑定器绑定,则应用所需属性的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ASP.Net MVC 模型绑定器将空 JSON 数组绑定到 null?
Asp.Net Core Razor Page PUT Handler 模型绑定器未绑定来自 ajax put 上的 java 脚本的序列化表单