.net - 如何扩展 Html.ValidationMessage 以便我可以包含图像作为错误?

标签 .net asp.net-mvc validation

我想减少以下代码。下面的代码有效,但它不是很整洁等。

    <label for="Name">Name:</label><%= Html.TextBox("Name")%><% 
    if (!string.IsNullOrEmpty(Html.ValidationMessage("Name"))) {
        string Error = HtmlRemoval.StripTags(Html.ValidationMessage("Name")); %>
        <img src="Error.gif" alt="Error" title="<%= Error %>" /><%
    }
    %>

我已经读到我需要扩展 Html 帮助程序,以便我可以返回图像而不是包含默认元素和文本错误的文本。

我似乎找不到任何关于如何实现这一目标的文章或一般建议。我对 ASP.NET MVC 还是很陌生。任何建议将不胜感激。

最佳答案

您可以像这样扩展 HtmlHelper:

public static class CustomHtmlHelper {

  public static string ValidationImage(this HtmlHelper helper, string name) {
    if (helper.ViewData.ModelState[name] == null || helper.ViewData.ModelState[name].Errors == null) {
      return String.Empty;
    }
    TagBuilder tag = new TagBuilder("img");
    tag.Attributes.Add("src", "Error.gif");
    tag.Attributes.Add("alt", "Error");
    tag.Attributes.Add("title", helper.ViewData.ModelState[name].Errors[0].ErrorMessage);
    return tag.ToString(TagRenderMode.SelfClosing);
  }

}

然后在您的页面中导入包含扩展方法的类
<%@ Import Namespace="CustomHtmlHelperNamespace" %>

然后将以下内容添加到您的页面:
<label for="Name">Name:</label>
<%= Html.TextBox("Name")%>
<% Html.ValidationImage("Name") %>

有关扩展 HtmlHelper 的更多信息,请尝试 here但基本上这扩展了 HtmlHelper,检查 ViewState 中解析的值是否存在错误(在您的情况下为“Name”),如果它包含错误,则会生成呈现图像所需的 HTML。图像的标题属性将包含字段“名称”的验证消息

关于.net - 如何扩展 Html.ValidationMessage 以便我可以包含图像作为错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1265857/

相关文章:

c# - asp.net 多个文件上传控件的多个上传

asp.net-mvc - Entity Framework 6(ASP .NET MVC)阻止了整个应用程序

javascript - 当我以编程方式设置 TextBoxFor 的值时,它作为 null 发布到 Controller

ios - 在 Swift 中输入字段之前禁用按钮

.net - 具有 Appearance=Buttons 的 Windows TabControl,在右侧获得较大的边距

c# - .NET中进行事后分析的可能性有哪些(例如,程序崩溃后)?

javascript - 一个 Controller 中的多个路由导致 400 :bad request

validation - symfony 验证表单不调用

java - 解析时调用 SAX error() 处理程序方法,但没有抛出异常 - 为什么?

.NET SOAP 常见类型