【问题标题】:Validation error message not displaying MVC4验证错误消息不显示 MVC4
【发布时间】:2017-12-01 00:21:55
【问题描述】:

我正在使用 MVC4。

验证失败,但未显示验证错误消息。

这是我的模型。

public class Configuration
{
    public int Id { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "Site name is required.")]
    [MinLength(6, ErrorMessage = "Name should be at least 6 characters.")]
    public string SiteName { get; set; }
}

控制器。

[HttpPost]
    public ActionResult Create(Configuration configItem)
    {
        if (ModelState.IsValid)
        {
            // do something.
        }
        return View("Index", configItem);
    }

查看是

@model Models.SitesConfig.Configuration
@{
ViewBag.Title = "Sites Configurations";
}
<div>
    @Html.ActionLink("Sites List", "List", "SiteConfig")
</div>
@using (Html.BeginForm("Create", "SiteConfig", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <fieldset>
        <legend>New Satellitesite</legend>
        <div>
            @Html.LabelFor(m => m.SiteName, "Name")
            @Html.TextBoxFor(m => m.SiteName)
            @Html.ValidationMessageFor(m=>m.SiteName)
        </div>
        <br />

        <input type="submit" value="Save" />

    </fieldset>
}

如果有更好的验证方法,也请建议我。

【问题讨论】:

  • 如果没有显示错误,你怎么知道验证正在工作?您是在谈论客户端还是服务器端验证?
  • 这是服务器端验证。 Model.IsValid 返回 false。
  • 顺便说一句,您的代码看起来不错。您所显示的视图是 Index.cshtml 并且您没有对控制器操作中的 ModelState 集合执行任何操作吗?
  • 您是否在布局中引用了Site.css?或者您是否有验证消息的自定义样式?可能是 html 输出中的验证消息,只是没有显示出来……你可以在点击提交后检查生成的 html 吗?
  • 我不知道,但它现在开始显示错误。再次清理并构建解决方案。但我面临另一个问题。

标签: asp.net-mvc-3 asp.net-mvc-4 validation model-validation


【解决方案1】:

我不知道是什么问题。清理并构建应用程序后,我可以看到错误消息。

谢谢, 纳雷什

【讨论】:

  • 这里一样 :) .Clean+Rebuild =Solved
【解决方案2】:

视图中应该有@Html.ValidationSummary("Please correct the errors")

【讨论】:

  • @Html.ValidationMessageFor(m=&gt;m.SiteName) 应该能够为SiteName 属性显示一条错误消息。不需要摘要。
【解决方案3】:
@using (Html.BeginForm("Create", "SiteConfig", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
  @Html.ValidationSummary()
    <fieldset>
        <legend>New Satellitesite</legend>
        <div>
            @Html.LabelFor(m => m.SiteName, "Name")
            @Html.TextBoxFor(m => m.SiteName)
            @Html.ValidationMessageFor(m=>m.SiteName)
        </div>
        <br />

        <input type="submit" value="Save" />

    </fieldset>
}

试试这个。@Html.ValidationSummary() 有助于显示错误消息。

【讨论】:

    【解决方案4】:

    如果您尝试了上述解决方案但仍然无法正常工作,那么您可能需要格式化您的视图文件。转到编辑高级格式文档。请记住,尝试格式化文件时不要处于调试模式,因为如果您正在调试项目,您将看不到上面列出的过程。

    【讨论】:

      【解决方案5】:

      确保您的 View 引用了 Scripts 标签中的 jQuery 验证 -

      @section Scripts
      {
          @Scripts.Render("~/bundles/jqueryval")
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-07
        • 1970-01-01
        • 1970-01-01
        • 2014-09-23
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        相关资源
        最近更新 更多