Javascript 自定义验证摘要HTML帮助程序不';我不能在客户端工作

Javascript 自定义验证摘要HTML帮助程序不';我不能在客户端工作,javascript,jquery,.net,asp.net-mvc-3,Javascript,Jquery,.net,Asp.net Mvc 3,我正在处理mvc3应用程序,需要修改ValidatioSummary消息的样式,为此,我创建了自己的HTM帮助程序,如下所示: public静态MvcHtmlString MyValidationSummary(此HtmlHelper帮助程序){ 字符串retainHtml+=“”; int计数器错误=0; if(helper.ViewData.ModelState..IsValid) { 标记生成器标记=新标记生成器(“div”); 添加(“类”,“验证摘要有效”); tag.Attribut

我正在处理mvc3应用程序,需要修改ValidatioSummary消息的样式,为此,我创建了自己的HTM帮助程序,如下所示:

public静态MvcHtmlString MyValidationSummary(此HtmlHelper帮助程序){
字符串retainHtml+=“”;
int计数器错误=0;
if(helper.ViewData.ModelState..IsValid)
{
标记生成器标记=新标记生成器(“div”);
添加(“类”,“验证摘要有效”);
tag.Attributes.Add(“data valmsg summary”、“true”);
tag.InnerHtml+=“发现了“+计数器错误+”错误
retainHtml+=tag.ToString();
返回MvcHtmlString.Create(retainHtml);
}
如果(!helper.ViewData.ModelState.IsValid)
{
标记生成器标记=新标记生成器(“div”);
添加(“类”,“验证摘要错误”);
tag.Attributes.Add(“data valmsg summary”、“true”);
retainHtml+=“”;
计数器错误=1;
字符串temretainhtml=“”;
foreach(helper.ViewData.ModelState.keys中的var键)
}
foreach(helper.ViewData.ModelState[key]中的var err.错误)
temretainhtml+=“
  • 错误”+反错误+++:“+err.ErrorMessage+”
  • ”; } retainHtml+=“错误!存在”+--countererror+“发现错误”; retainHtml+=“”; 保留TML+=“
      ”; retainHtml+=temretainhtml; 保留TML+=“
    ”; } 返回MvcHtmlString.Create(retainHtml); } } }
    这非常适合服务器端验证,但我也需要在客户端验证上实现这种风格,现在,表单在客户端页面顶部显示validationSummary,但使用默认MVC格式,而不是我在HTML助手中指定的格式,我已经做了很多研究,但不幸的是我没有任何运气,我是否需要在jquery.validate.unobtrusive.js文件中做任何更改来应用这些更改?或者我需要在jquery中创建另一个验证文件吗?我在jquery方面的经验很差,我现在很迷茫,如果您能给我任何帮助,我将不胜感激


    非常感谢

    您应该看看本教程的结尾:

    迟交的答复: jquery.validate.unobtrusive.js很难连接。尝试以下操作,而不是修改文件(永远不理想):

    听下面的事件

    form.bind("invalid-form.validate", handler...
    
    然后构建您自己的摘要:

    form.bind("invalid-form.validate", function (evt, validator) {
        var container = $(this).find("[data-valmsg-summary=true]");
        var list = container.find("ul");
    
        if (list && list.length && validator.errorList.length) {
            list.empty();
            container.addClass("validation-summary-errors").removeClass("validation-summary-valid");
    
            $.each(validator.errorList, function () {
                $("<li style='color:#00aa00'/>").html(this.message).appendTo(list);
            });
        }
    });
    
    form.bind(“无效的form.validate”,函数(evt,验证器){
    var container=$(this.find(“[data valmsg summary=true]”);
    var列表=容器。查找(“ul”);
    if(list&&list.length&&validator.errorList.length){
    list.empty();
    container.addClass(“验证摘要错误”).removeClass(“验证摘要有效”);
    $.each(validator.errorList,函数(){
    $(“
  • ”)html(this.message).appendTo(list); }); } });
  • 如果您在视图中使用razor,我认为您可以控制在何处以及如何显示验证标签。I do,在表单的开头,我使用自己的助手@Html.MyValidationSummary(),就在@using(Html.BeginForm())之后,但在客户端仍然不起作用,只是在服务器端完成验证时调用,有什么想法吗?非常感谢您花时间回答!!,成功了!!我现在的问题是,是否可以更改错误消息的格式?我的意思是,如果我想在表单中使用ValidationMessageFor时将其更改为自定义消息,并放置一些前缀格式,如错误1:“模型中预定义的消息”是否可以?
    form.bind("invalid-form.validate", function (evt, validator) {
        var container = $(this).find("[data-valmsg-summary=true]");
        var list = container.find("ul");
    
        if (list && list.length && validator.errorList.length) {
            list.empty();
            container.addClass("validation-summary-errors").removeClass("validation-summary-valid");
    
            $.each(validator.errorList, function () {
                $("<li style='color:#00aa00'/>").html(this.message).appendTo(list);
            });
        }
    });