如何重新格式化我的 ASP.NET MVC5 错误消息以仅显示 C# 中的第一条消息

本文关键字:消息 显示 一条 我的 格式化 ASP NET 错误 MVC5 何重新 | 更新日期: 2023-09-27 18:36:03

我有以下代码,我认为它将向我显示模型中的每个错误:

@if (!ViewData.ModelState.IsValid)
{
    <ul>
    @foreach (string key in ViewData.ModelState.Keys)
    {
        @foreach (var error in ViewData.ModelState[key].Errors)
        {
            <li>@error.ErrorMessage</li>
        }
    }
    </ul>
}

代码是嵌入在网页中的 C#。有人可以告诉我如何报告第一条消息并在<span>中报告.

如何重新格式化我的 ASP.NET MVC5 错误消息以仅显示 C# 中的第一条消息

@if (!ViewData.ModelState.IsValid)
{
    <span>
        @ViewData.ModelState.First(x => x.Value.Errors.Any()).Value.Errors.First().ErrorMessage
    </span>
}

当然,您可以编写一个自定义 HTML 帮助程序来执行此工作,而不是在视图中以此类 LINQ 查询结尾:

@Html.FirstModelError()

和帮助程序实现:

public static class HtmlHelpers
{
    public static IHtmlString FirstModelError(this HtmlHelper html)
    {
        var modelState = html.ViewData.ModelState;
        if (modelState.IsValid)
        {
            return MvcHtmlString.Empty;
        }
        var span = new TagBuilder("span");
        string errorMessage = modelState
            .First(x => x.Value.Errors.Any())
            .Value
            .Errors
            .First()
            .ErrorMessage;
        span.SetInnerText(errorMessage);
        return new HtmlString(span.ToString());
    }
}