我想知道代码中是否存在Html.ValidationSummary。如果Html.ValidationSummary的参数为true,则html中不存在标记div class="validation-summary-valid"
。即Html.ValidationSummary(true)
,结果,如果Html.ValidationSummary在代码中,则没有可靠的方法知道jquery。
有财产说明了吗?是否存在Html.ValidationSummary
[编辑:澄清]
将Html.ValidationSummary放在参数为true的地方:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<b>Hello</b>
,而不是放任何Html.ValidationSummary:
@using (Html.BeginForm()) {
<b>Hello</b>
,两个代码都产生相同的HTML(查看页面源):
<b>Hello</b>
就是这样,jQuery没有可靠的方式来知道代码中是否存在Html.ValidationSummary
答案 0 :(得分:0)
如果您只是在谈论jQuery,那么您不能这样做:
if ($('.validation-summary-valid').size() > 0)
{
// Do Something
}
答案 1 :(得分:0)
这种情况正在发生,因为ValidationSummary
助手如果没有错误(<div class="validation-summary-errors"/>
返回ViewData.ModelState.IsValid
时),则不会返回空true
。在这种情况下,您需要使用自定义ValidationSummary
来修复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
namespace System.Web.Mvc
{
public static class HtmlHelpers
{
public static MvcHtmlString CustomValidationSummary(this HtmlHelper helper, string validationMessage = null)
{
StringBuilder summary = new StringBuilder();
summary.Append("<div class=\"validation-summary-errors\">");
if (helper.ViewData.ModelState.IsValid)
{
summary.Append("</div>");
return new MvcHtmlString(summary.ToString());
}
else if (!string.IsNullOrEmpty(validationMessage))
{
summary.Append("<ul>");
summary.AppendFormat("<li>{0}</li>", validationMessage);
summary.Append("</ul>");
summary.Append("</div>");
return new MvcHtmlString(summary.ToString());
}
summary.Append("<ul>");
foreach (KeyValuePair<string, ModelState> state in helper.ViewData.ModelState)
{
foreach (ModelError error in state.Value.Errors)
{
summary.AppendFormat("<li>{0}</li>", HttpUtility.HtmlEncode(error.ErrorMessage));
}
}
summary.Append("</ul>");
summary.Append("</div>");
return new MvcHtmlString(summary.ToString());
}
}
}
即使没有错误,此自定义ValidationSummary
帮助器也会生成空validation-summary-errors div
,每次都会在您的html中出现其他单词<div class="validation-summary-errors"/>
,如您所愿。