asp.net core 2.1 在验证摘要中显示 HTML

Dav*_* S. 2 razor asp.net-core-mvc asp.net-core

在正常的 asp.net MVC 中,如果我想在控制器或其他上游进程放置的验证摘要中包含自定义 html 并将其显示在 Razor 中,我只需执行以下操作:

@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationSummary().ToHtmlString()))
Run Code Online (Sandbox Code Playgroud)

为了得到 html 解码。这似乎不再适用于 Asp.Net core。如何在 .net core 2.1 中获得相同的结果?

Nee*_*ack 6

在 ASP.NET core 中,您可以使用显示 ModelState 错误的摘要asp-validation-summary(请参阅验证文档

例如:

<div asp-validation-summary="ModelOnly" class="text-danger"></div>
Run Code Online (Sandbox Code Playgroud)

如果您需要直接访问错误并创建自己的自定义 html 错误摘要/输出,您可以使用@ViewData.ModelState

例如:

<ul>
    @foreach (var error in ViewData.ModelState.SelectMany(x => x.Value.Errors))
    {
        <li>@error.ErrorMessage</li>
    }
</ul>
Run Code Online (Sandbox Code Playgroud)

如果错误消息包含原始 html,您可以使用@Html.Raw()

例如:

<ul>
    @foreach (var error in ViewData.ModelState.SelectMany(x => x.Value.Errors))
    {
        <li>@Html.Raw(error.ErrorMessage)</li>
    }
</ul>
Run Code Online (Sandbox Code Playgroud)