asp.net-mvc - 如何在ASP MVC中自定义Html.ValidationMessageFor

标签 asp.net-mvc asp.net-mvc-3

是否可以自定义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/

相关文章:

javascript - jquery 幻灯片使用图像幻灯片容器添加内容

c# - 枚举标志的模型绑定(bind)列表

asp.net-mvc - ASP.NET MVC 数据注释工具提示

asp.net-mvc-3 - 如何在 NHibernate 3.2 中实现通用存储库模式和 UoW

javascript - ASP.Net : can onload event apply to a control

asp.net-mvc - 还有什么更 RESTful : Recommended practice for flipping a boolean via PATCH in WebAPI

asp.net-mvc-3 - ASP.Net MVC 3 EF4.1 代码优先 - 不支持每种类型的多个对象集

jquery - MVC3 : jquery ajax to return partial view with HTML dataType from controller but getting error

asp.net - 在 ASP.NET 中流式传输大文件上传

asp.net-mvc-3 - 在 facebook C# SDK 6.4 中替代 Facebook 订阅验证