You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core MVC中如何自定义下拉框的text-danger验证错误消息?

自定义.NET Core MVC下拉列表验证错误消息的正确方式

嘿,我来帮你搞定这个问题!你之前直接在asp-validation-for的span标签里写死文本的方式行不通,因为这个span是框架用来动态渲染验证错误消息的元素,页面一加载就会显示你写的内容,不符合“验证失败时才显示”的需求。下面给你两种实用的解决方法:

方法一:在Model层用数据注解(推荐)

这是最规范的方式,能同时作用于服务器端和客户端验证,统一管理验证规则和消息。

找到你的Model类,在ProductID属性上添加[Required]注解,并指定自定义的错误消息:

using System.ComponentModel.DataAnnotations;

public class YourModelName
{
    [Required(ErrorMessage = "Please select a product")]
    public int ProductID { get; set; }

    // 其他属性...
}

之后保持你原来的视图代码不变就行:

<select asp-for="ProductID" class="form-control" asp-items="ViewBag.ProductID">
    <option value="">--Select Product --</option>
</select>
<span asp-validation-for="ProductID" class="text-danger"></span>

这样不管是客户端验证(比如用户没选就提交)还是服务器端验证,都会显示你自定义的消息,而且只有验证失败时才会出现。

方法二:在视图层手动指定验证消息(无需修改Model)

如果你不想改动Model,可以直接在select标签上添加data-val-required属性来设置客户端验证的自定义消息:

<select asp-for="ProductID" class="form-control" asp-items="ViewBag.ProductID" data-val-required="Please select a product">
    <option value="">--Select Product --</option>
</select>
<span asp-validation-for="ProductID" class="text-danger"></span>

不过要注意,这种方式只影响客户端验证,如果服务器端没有添加[Required]注解,还是可能出现默认的错误消息,所以更推荐第一种方法。

额外注意事项

确保你的项目开启了客户端验证:在_Layout.cshtml里已经引入了以下脚本(.NET Core MVC模板默认会包含):

<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

内容的提问来源于stack exchange,提问作者crazyPen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:10:27