模型验证摘要未显示

Posted

技术标签:

【中文标题】模型验证摘要未显示【英文标题】:Model validation Summary not showing up 【发布时间】:2017-05-09 16:41:20 【问题描述】:

我正在关注 Shawn Wildermuth 的 MVC6 优秀 Pluralsight 教程,但我一直坚持要为整个模型显示验证消息。

这是行动:

[HttpPost]
public IActionResult Contact(ContactViewModel model)

    if (model.Email.Contains("aol.com"))
        ModelState.AddModelError("", "We don't support AOL addresses.");
    if (ModelState.IsValid)
    
        var toAddress = _config["MailSettings:ToAddress"];
        _mailService.SendMail(toAddress, model.Email, "Contact Page", model.Message);
    

    return View();

当我提交表单时,检测到“aol”地址并按预期将错误添加到ModelState,然后IsValid失败,并返回View()

<h2>Contact Me</h2>
<form method="post">
    <span asp-validation-summary="ModelOnly"></span>

    <label asp-for="Name">Name</label>
    <input asp-for="Name"/>
    <span asp-validation-for="Name"></span>

    <label asp-for="Email">Email</label>
    <input asp-for="Email" type="email"/>
    <span asp-validation-for="Email"></span>

    <label asp-for="Message">Message</label>
    <textarea asp-for="Message" cols="40" rows="4"></textarea>
    <span asp-validation-for="Message"></span>

    <div>
        <input type="submit" value="Send Message"/>
    </div>
</form>

遗憾的是,DOM 检查显示摘要的&lt;span asp-validation-summary="ModelOnly"&gt;&lt;/span&gt; 仍然为空。所有其他表单验证都按预期工作。

建议?

【问题讨论】:

【参考方案1】:

尝试从跨度更改

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

到 div

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

跨度输出:

div 输出:

【讨论】:

成功了——不知道为什么他在视频中没有这个问题,但我对使用内联级别元素作为容器感到困惑。

以上是关于模型验证摘要未显示的主要内容,如果未能解决你的问题,请参考以下文章

视图上未显示验证错误消息

Angular 2 / Material - 应用到父 FormGroup 的自定义验证器未显示 md 错误

asp .net core - 自定义验证错误未显示在视图中

如何使用引导程序在 MVC5 顶部显示验证错误摘要?

一次显示验证消息(验证摘要)而不是逐个jqgrid?

无法让模型在显示页面上用于提交和验证