2010-04-26 6 views
2

등록 페이지가 있는데 유효성 검사에 실패하면 HTML.ValidationSummary 컨트롤을 사용하여 오류 메시지가 표시됩니다.ASP.NET MVC 페이지 - HTML.ValidationSummary의 하이퍼 링크

이제 유효성 검사 오류 메시지에 하이퍼 링크를 표시해야합니다. 그러나 href를 문자열로 간주하고 있습니다. 내가 하이퍼 링크로 표시하려고

유효성 검사 메시지

은 다음과 같습니다 **"User already exists in the system, please <a href='../Login.aspx'>login</a>"**

당신의 응답을 주셔서 감사합니다. 여기

내 코드입니다 :

<% using (Html.BeginForm()) {%> 
    <%= Html.ValidationSummary(false) %> 
    <fieldset> 
    <div class="cssform">; 
     <p> 
      <%= Html.LabelFor(model => model.email)%><em>*</em> 
      <%= Html.TextBoxFor(model => model.email, new { @class = "required email" })%> 
      <%= Html.ValidationMessageFor(model => model.email)%> 
     </p> 
     <p> 
      <%= Html.Label("Confirm email")%><em>*</em> 
      <%= Html.TextBox("confirm_email")%> 
      <%= Html.ValidationMessage("confirm_email") %> 
     </p> 
     <p> 
      <%= Html.Label("Password")%><em>*</em> 
      <%= Html.Password("Password", null, new { @class = "required" })%> 
      <%= Html.ValidationMessage("Password")%><br /> 
      (Note: Password should be minimum 6 characters) 
     </p> 
     <p> 
      <%= Html.Label("Confirm Password")%><em>*</em> 
      <%= Html.Password("confirm_password")%> 
      <%= Html.ValidationMessage("confirm_password") %> 
     </p><hr /> 
    </div> 
    <p><input type="submit" value="Register" /></p> 
    </fieldset> 
<% } %> 

답변

3

의 ValidationSummary 도우미는 HTML 코드 값을 반환 기본; ValidationSummary 내부에서 HTML을 허용하려면 고유 한 버전을 만들어야합니다. 시작하려면 MVC 2 RTM source code에있는 소스 코드를 살펴보십시오. ValidationSummary HtmlHelper는 System.Web.Mvc.Html.ValidationExtensions 클래스 (mvc2-rtm-sources \ src \ SystemWebMvc \ Mvc \ Html에 있음)에 정의되어 있습니다.

listItem.SetInnerText(errorText)이 범인임을 나타납니다 ValidationExtensions.cs의 소스 코드를 살펴 촬영 :

if (modelStates != null) { 
    foreach (ModelState modelState in modelStates) { 
     foreach (ModelError modelError in modelState.Errors) { 
      string errorText = GetUserErrorMessageOrDefault(htmlHelper.ViewContext.HttpContext, modelError, null /* modelState */); 
      if (!String.IsNullOrEmpty(errorText)) { 
       TagBuilder listItem = new TagBuilder("li"); 
       listItem.SetInnerText(errorText); 
       htmlSummary.AppendLine(listItem.ToString(TagRenderMode.Normal)); 
      } 
     } 
    } 
} 

원하는 동작을 생산합니다 listItem.InnerHtml = errorText에 코드를 변경하기를, ValidationSummary 메서드는 원래 동작을 재현하기 위해 사용자 지정된 버전에서 수동으로 구현해야하는 내부 System.Web.Mvc 메서드를 호출하기 때문에 간단하지는 않습니다.

+0

그래를 ......... 그것은 그렇게 간단하지 않습니다 .... – Rita

+0

무엇 너 무슨 뜻이야? –

+0

언급 한대로 ........ 매우 간단하지는 않은 것처럼 보입니다. – Rita

2

는 서버 측 솔루션 더 나은이지만, 클라이언트 측에서 우리가 빠른 트릭 실행할 수 있습니다 :

$(function(){ 
    $(".validation-summary-errors").find("li").each(function() { 
     var $this = $(this); 
     $this.html($this.text()); 
    }); 
});