是否可以自定义Html.ValidationMessageFor方法,以使其产生不同的HTML?
我想做类似的事情:
<div class="field-error-box">
<div class="top"></div>
<div class="mid"><p>This field is required.</p></div>
</div>
最佳答案
我不确定是否可以使用p
aragraph而不是默认的span
,因为验证插件可能无法放置错误消息。但是对于div -s来说,这很简单-您可以编写自定义html帮助程序。
这些内容(可能需要进一步的测试/编码)。您将需要在 View 中包括此静态扩展方法的 namespace ,或者将其直接放入System.Web.Mvc.Html
中。
public static class Validator
{
public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
TagBuilder containerDivBuilder = new TagBuilder("div");
containerDivBuilder.AddCssClass("field-error-box");
TagBuilder topDivBuilder = new TagBuilder("div");
topDivBuilder.AddCssClass("top");
TagBuilder midDivBuilder = new TagBuilder("div");
midDivBuilder.AddCssClass("mid");
midDivBuilder.InnerHtml = helper.ValidationMessageFor(expression).ToString();
containerDivBuilder.InnerHtml += topDivBuilder.ToString(TagRenderMode.Normal);
containerDivBuilder.InnerHtml += midDivBuilder.ToString(TagRenderMode.Normal);
return MvcHtmlString.Create(containerDivBuilder.ToString(TagRenderMode.Normal));
}
}
如您所见,这使用默认的
ValidationMessageFor
方法,以不干扰验证插件错误消息的处理。您可以简单地将其用作默认验证消息助手
@Html.MyValidationMessageFor(model => model.SomeRequiredField)
关于asp.net-mvc - 如何在ASP MVC中自定义Html.ValidationMessageFor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8380988/