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

Asp.net 在视图中禁用某些[必需]字段验证器,asp.net,asp.net-mvc,validation,data-annotations,asp.net-core-mvc,Asp.net,Asp.net Mvc,Validation,Data Annotations,Asp.net Core Mvc,ASP.NET MVC核心,如果这有什么区别的话 在某些情况下,是否有一种简单的方法来禁用模型或视图中的某些字段验证器 web上的大多数信息看起来都来自ASP.NET表单时代。 我找不到太多的东西来尝试,但是,这似乎不起作用 <label asp-for="Files.PromoImage" class="col-md-2 control-label"></label> <div class="col-md-10"> <input asp-for

ASP.NET MVC核心,如果这有什么区别的话

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

web上的大多数信息看起来都来自ASP.NET表单时代。 我找不到太多的东西来尝试,但是,这似乎不起作用

<label asp-for="Files.PromoImage" class="col-md-2 control-label"></label>
<div class="col-md-10">
    <input asp-for="Files.PromoImage" class="form-control" />
    @if (Model.Content.NewArticle)
    {
        <span asp-validation-for="Files.PromoImage" class="text-danger"></span>
    }
</div>
<div class="col-md-8">
    <div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
</div>

@if(Model.Content.NewArticle)
{
}
如果
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"/>
}
@if(Model.Content.NewArticle)
{
}
其他的
{
}
然后在服务器上,在post-action方法中,必须手动验证
PromoImage
属性


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

如何生成相应的输入?请记住,使用新的“asp for”标记帮助器(例如,
)也将自动生成验证范围,并将数据要求属性附加到输入中。添加了相应代码的其余部分