在视图中禁用某些[必需]字段验证器

时间:2016-04-16 14:11:28

标签: asp.net asp.net-mvc validation data-annotations asp.net-core-mvc

ASP.NET MVC Core如果有任何区别

在某些情况下,是否有一种简单的方法可以禁用模型或视图中的某些字段验证器?

网络上的大多数信息都来自ASP.NET Forms时代。 我找不到太多可以尝试的东西但是,这看起来没有做到这一点。

{{1}}

1 个答案:

答案 0 :(得分:1)

如果<input asp-for="Files.PromoImage"/>属性标有data-required属性,

PromoImage将生成验证范围和[Required]属性。您可以在浏览器中检查生成的html。

实现目标的最简单方法是删除模型中的[Required]属性,并在视图中显示以下内容:

@if (Model.Content.NewArticle)
{
    <input class="form-control" data-val="true" 
        data-val-required="The PromoImage field is required." name="Files.PromoImage" 
        placeholder="Promo Image" type="text" value="">        
}
else
{
    <input asp-for="Files.PromoImage" class="form-control"/>
}

然后再次在服务器上,在post post方法中,您必须对PromoImage属性进行手动验证。

不是那么简单但更优雅的方法是使用您自己的验证属性和jQuery验证器来扩展MVC和jQuery验证,例如: [RequiredIf]。 ASP.NET Core 1.0中的API略有不同,但这里有一个示例:Custom validation