我正在研究mvc3应用程序,我需要修改ValidatioSummary消息的样式,为此,我创建了自己的HTM帮助程序,如下所示:
public static MvcHtmlString MyValidationSummary(this HtmlHelper helper){ string retainHtml +=""; int counterror = 0; if (helper.ViewData.ModelState..IsValid) { TagBuilder tag = new TagBuilder("div"); tag.Attributes.Add("class", "validation-summary-valid"); tag.Attributes.Add("data-valmsg-summary", "true"); tag.InnerHtml += "<span> There was" + countererror + "errors found<ul><li></li></ul>" retainHtml += tag.ToString(); return MvcHtmlString.Create(retainHtml); } if (!helper.ViewData.ModelState.IsValid) { TagBuilder tag = new TagBuilder("div"); tag.Attributes.Add("class", "validation-summary-errors"); tag.Attributes.Add("data-valmsg-summary", "true"); retainHtml +="<div class='validation-summary-errors'><span>"; counterror = 1; string temretainhtml =""; foreach (var key in helper.ViewData.ModelState.keys) } foreach (var err in helper.ViewData.ModelState[key].Errors) temretainhtml += "<li>Error " + countererror++ + " : " + err.ErrorMessage + "</li>"; } retainHtml += "Error ! there was " + --countererror + " errors found"; retainHtml += "</span>"; retainHtml += "<ul>"; retainHtml += temretainhtml; retainHtml += "</ul></div>"; } return MvcHtmlString.Create(retainHtml); } } }
这适用于服务器端验证,但我需要在客户端验证上实现此样式,此时,表单在客户端页面顶部显示validationSummary但使用默认的MVC格式,不是我在HTML帮助器中指定的那个,我一直在做很多研究,但不幸的是我没有运气,我可能需要在jquery.validate.unobtrusive.js文件中进行任何更改来应用这些变化?或者我需要在jquery中创建另一个验证文件?我在jquery的经历非常糟糕,我现在很迷茫,你可以给我任何帮助,非常感谢。
非常感谢!!!
答案 0 :(得分:1)
迟到的答案: 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);
});
}
});
答案 1 :(得分:0)