【问题标题】:How to show multiple error messages for the same field in Asp.Net core如何在 Asp.Net 核心中显示同一字段的多个错误消息
【发布时间】:2021-05-03 18:55:37
【问题描述】:

我正在尝试获取一个将在两个位置显示错误消息的输入,一个是输入字段旁边的星号,然后是该部分底部的更详细的错误消息。目前我有

    <div>
        <div>Html.DropDownListFor(x => x.selectMode, new SelectList(Model.modes))</div>
        @Html.ValidationMessageFor(x => x.selectMode,"*",new {@class = " text-danger"})
    </div>

当输入无效时显示星号就好了,但问题是它覆盖了假设在底部的其他消息,所以它不显示。

    <div>
         @Html.ValidationMessageFor(x => x.selectMode,"Select a valid mode",new {@class = " text-danger"})
    </div>

我应该做些什么不同的事情来显示两个错误消息?

编辑:模型本身每个字段只有一个错误,我只是想使用@Html.ValidationMessageFor() 或类似的东西让它在两个不同的地方显示两次。

【问题讨论】:

标签: c# html asp.net-mvc asp.net-core


【解决方案1】:

型号

public class TestModel
{
    public string TestProperty { get; set; }
}

控制器动作

public IActionResult Test()
{
    ModelState.AddModelError("TestProperty", "TestErrorMessage");
    var m = new TestModel();
    return View(m);
}

查看Test.cshtml

@model TestModel
Text @Html.TextBoxFor(m => m.TestProperty)

@*Show a star as validation error*@
<div>
    @Html.ValidationMessageFor(m => m.TestProperty, "*", new { @class = " text-danger" })
</div>

@*Show a custom validation error message*@
<div>
    @Html.ValidationMessageFor(m => m.TestProperty, "Another custom error message", new { @class = " text-danger" })
</div>


@*Show the validation error message from the validation state. Use null for message to show message from validation state*@
<div>
    @Html.ValidationMessageFor(m => m.TestProperty, null, new { @class = " text-danger" })
</div>

【讨论】:

  • 这几乎正是我所需要的!但是,如果验证的属性不止一个,它会再次返回仅显示显示的第一种类型的消息。
【解决方案2】:

事实证明,问题不在于它没有显示两条消息,而在于这些消息要么只能是自定义的,要么可以从模型中提供给它。就我而言,我试图同时使用自定义消息(星号)和模型中的消息(此字段是必需的)。

当我进行一项自定义时,另一项正在显示,但显示为“”,这使它看起来不可见,但它一直都在那里。

【讨论】:

  • 你说的不对。您可以在模板中的一个位置输出自定义消息,并在模板中的不同位置从模型输出消息。创建一个minimal reproducible example,我们可以找出问题所在
【解决方案3】:

ValidationSummary() 方法可以显示所有错误信息。

<div>
         @Html.ValidationSummary(false, "", new { @class = "text-danger" })
</div>

【讨论】:

    猜你喜欢
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 2016-02-04
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多