asp .net core - 自定义验证错误未显示在视图中

Posted

技术标签:

【中文标题】asp .net core - 自定义验证错误未显示在视图中【英文标题】:asp .net core - custom validation errors not displayed on view 【发布时间】:2017-04-07 13:40:00 【问题描述】:

这是我的数据模型,它包含一个自定义验证:

public class MyData : IValidatableObject

    public int ID  get; set; 
    public int number  get; set; 

    [Required]
    public string text  get; set; 

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    
        if (text.Length < number)
        
            yield return new ValidationResult(
                "Text too short, must be at least: " + number.ToString(),
                new[]  "number" );
        
    

这是我观点的一部分:

<div class="form-group">
    <label asp-for="number" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="number" class="form-control" />
        <span asp-validation-for="number" class="text-danger" />
    </div>
</div>

自定义验证错误文本永远不会显示在 asp-validation-for 应该放置的位置(当字段数据不存在时,标准消息“数字字段是必需的。”正确显示)。

但是,如果我在视图中添加此代码段:

<div>
    @html.ValidationMessage("number")
</div>

...它将显示自定义错误消息。

asp-validation-for helper 有什么问题?

【问题讨论】:

【参考方案1】:

我在你使用的代码中发现了它

<span asp-validation-for="number" class="text-danger" />

您需要添加结束标记。像使用它

<span asp-validation-for="number" class="text-danger" ></span>

它会在字段下方显示错误消息。

【讨论】:

以上是关于asp .net core - 自定义验证错误未显示在视图中的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net Core MVC - 自定义验证

如何在 ASP.NET Core 中实现自定义模型验证?

在 Asp.net Core MVC 中定义自定义客户端验证规则

ASP.Net-Core 中的自定义身份验证

ASP.Net Core MVC - 自定义属性的客户端验证

向 ASP.NET Core 的 JWT 令牌添加自定义验证?