如何在ASP.NET MVC中扩展ValidationSummary HTML Helper?

cra*_*ver 14 asp.net validation asp.net-mvc

我需要将验证摘要包装在div中.当出现错误时,如何设置验证摘要以将其包装为div

<div class="validation-summary"> 
  <%= Html.ValidationSummary("Login was unsuccessful. Please correct the errors and try again.") %>
</div>
Run Code Online (Sandbox Code Playgroud)

Cha*_*ino 24

我不得不在我的另一个项目中扩展验证摘要扩展,以处理页面上的多个表单.

虽然这有所不同,但您可以创建自己的扩展方法......

namespace System.Web.Mvc
{
    public static class ViewExtensions
    {
        public static string MyValidationSummary(this HtmlHelper html, string validationMessage)
        {
            if (!html.ViewData.ModelState.IsValid)
            {
                return "<div class=\"validation-summary\">" + html.ValidationSummary(validationMessage) + "</div>"
            }

            return "";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后打电话

<%= Html.MyValidationSummary(
    "Login was unsuccessful. Please correct the errors and try again.") %>
Run Code Online (Sandbox Code Playgroud)

HTHs,查尔斯

  • 当我尝试在我的MVC 2项目中使用它时,我得到一个HtmlHelper不包含ValidationSummary的定义 - 任何想法? (4认同)
  • 确保您有对System.Web.Mvc.Html的引用; (4认同)
  • 您可能希望返回MvcHtmlString而不是字符串,以便html不被编码并被视为html代码.我正在使用MVC3和新的Razor视图引擎. (4认同)
  • 有没有办法让这个工作为不引人注目的JavaScript?由于上面的代码都是服务器端,因此它不适用于客户端. (2认同)

Çağ*_*kin 12

你能做的是:

<%if (!ViewData.ModelState.IsValid) { %>
<div class="validation-summary"> 
    <%= Html.ValidationSummary(
        "Login was unsuccessful. Please correct the errors and try again.") %>
</div>
<% } %>
Run Code Online (Sandbox Code Playgroud)


小智 5

对于MVC 2,ValidationSummary是一种扩展方法,您必须添加

using System.Web.Mvc.Html;
Run Code Online (Sandbox Code Playgroud)