Javascript 自定义验证摘要HTML帮助程序不';我不能在客户端工作
我正在处理mvc3应用程序,需要修改ValidatioSummary消息的样式,为此,我创建了自己的HTM帮助程序,如下所示: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
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);
});
}
});