내가 MVC 3 유효성 검사를 사용하고 실패한 컨트롤에 해당하는 내 라벨이 빨간색으로 바뀔 때까지합니다. 내 제품 관리자는 오류가있는 각 컨트롤의 레이블이 빨간색으로 바뀌길 원합니다.
그래서 '학생 이름'레이블이 빨간색으로 바뀌어야합니다. '이메일 주소'라벨이 빨간색으로 바뀌어야합니다.
나는 사업부에 각 오류 MSG 포장과 JS 파일에 각 사업부<div id="divValStudentFirstName">@Html.ValidationMessageFor(m => m.studentFirstName)</div>
의 길이를 확인하려고 :
$(document).ready(function() {
if ($("#divValStudentFirstName").length > 1) {
("#divStudentFirstName").css("color", "red");
}
을하지만 더 성공이 없습니다. 유효성 검사는 완전히 새로 고치지 않고 수행되므로 유효성 검사가 실행될 때 my $ (document) .ready가 실행되지 않습니다. 정말 JS의 왕이 아니에요
클라이언트 측 유효성 검사가
을 활성화
public static IHtmlString ValidationLabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string labelText = null) {
var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
var name = ExpressionHelper.GetExpressionText(expression);
string resolvedLabelText = labelText ?? metadata.DisplayName ?? metadata.PropertyName ?? name.Split('.').Last();
if (String.IsNullOrEmpty(resolvedLabelText)) {
return MvcHtmlString.Empty;
}
var tag = new TagBuilder("label");
tag.Attributes.Add("for", TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name)));
tag.GenerateId(name);
tag.SetInnerText(resolvedLabelText);
ModelState modelState;
string fullName = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
if (html.ViewData.ModelState.TryGetValue(fullName, out modelState)) {
if (modelState.Errors.Count > 0) {
tag.Attributes.Add("style", "color:red");
}
}
return new MvcHtmlString(tag.ToString());
}
편집, 그러나 이것은 잘 (작동하는 것 같다 :
보기 코드의 일부를 표시 할 수 있습니까? 라벨에 LabelFor ..., 입력에 EditorFor를 사용하고 있습니까? –
예 라파엘, 그것의 일반적인 구현
위의 div의 그룹화 유효성 검사