我想减少以下代码。下面的代码有效,但它不是很整洁等。
<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/