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

如何在ASP.NET MVC Core的ModelState错误消息中添加可点击超链接?

问题:ModelState错误消息中的HTML超链接无法正常渲染

我在控制器中添加带HTML超链接的自定义验证错误消息,但视图里的asp-validation-summary会自动转义HTML代码,导致链接显示为纯文本而非可点击状态。

控制器代码示例:

public IActionResult LaunchItem()
{      
    var errorMsg = @"Error: Please click <a href=""https://localhost:44316/Controller/Action"" target=""_blank"">here</a> to fix error.";
    ModelState.AddModelError("", errorMsg);
    return View();
}

视图中渲染错误的代码:

<div asp-validation-summary="All" class="text-danger"></div>

实际显示效果是完整的HTML标签文本,而非可点击的链接。


解决方法

方法1:手动遍历错误并输出原始HTML

直接放弃asp-validation-summary,手动遍历ModelState中的错误,用Html.Raw()渲染未转义的HTML内容:

@if (!ViewData.ModelState.IsValid)
{
    <div class="text-danger">
        @foreach (var error in ViewData.ModelState.Values.SelectMany(v => v.Errors))
        {
            <p>@Html.Raw(error.ErrorMessage)</p>
        }
    </div>
}

方法2:自定义标签助手(保留原有用法)

如果想继续使用类似asp-validation-summary的语法,可以自定义标签助手来禁用HTML转义:

  1. 创建自定义标签助手类:
[HtmlTargetElement("div", Attributes = "asp-validation-summary-raw")]
public class ValidationSummaryRawTagHelper : ValidationSummaryTagHelper
{
    public ValidationSummaryRawTagHelper(IHtmlGenerator generator) : base(generator)
    {
    }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        base.Process(context, output);
        // 将转义后的内容转为原始HTML输出
        output.Content.SetHtmlContent(output.Content.GetContent());
    }
}
  1. 在_ViewImports.cshtml中注册该标签助手(替换YourAssemblyName为你的项目程序集名称):
@addTagHelper *, YourAssemblyName
  1. 在视图中使用自定义标签:
<div asp-validation-summary-raw="All" class="text-danger"></div>

内容的提问来源于stack exchange,提问作者LUAN-I JACKSON

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:35:25