2013-08-07 5 views
1

사이트 구성원이 계정의 비밀번호를 변경할 수 있도록 양식을 만들고 있는데 비밀번호를 입력하는 동안 사용자가 실수 한 내용을 설명하는 메시지를 표시하고 싶습니다. 짧음, 영숫자가 아닌 문자가 필요함 등). 필드 이름 옆의 같은 페이지에 이러한 메시지를 표시하고 싶습니다. 여기에 내 코드입니다 : 오류가 발견 된 때 채워질 수있는 목록을 추가하려고했습니다'전역'변수 면도기

@helper RenderForm() 
{ 
    <form method="post"> 
    <p>Change your password below</p> 

    <div><label for="currentPassword">Current Password</label> 
    <input type="password" id="currentPassword" name="currentPassword"/></div> 

    <div><label for="newPassword">New Password:</label> 
    <input type="password" id="newPassword" name="newPassword"/></div> 

    <div><label for="confirmPassword">Confirm New Password</label> 
    <input type="password" id="confirmPassword" name="confirmPassword"/></div> 

    <div><input type="submit" id="submit" name="submit" value="submit"/></div> 
    </form> 
} 

@helper Message(string message) 
{ 
    <p>@message</p> 
} 

<style type="text/css"> 
p,label {color:black;} 
</style> 


@{ 
    if(!IsPost) { 

     @RenderForm(); 

    } 

    else { 
     var account = Membership.GetUser(); 

     var currentPassword = HttpContext.Current.Request["currentPassword"]; 

     if(Membership.ValidateUser(account.UserName, currentPassword)){ 
      var newPassword = HttpContext.Current.Request["newPassword"]; 
      var confirmPassword = HttpContext.Current.Request["currentPassword"]; 

      if(check(newPassword, confirmPassword)){ 
       account.ChangePassword(account.ResetPassword(), newPassword); 
      } 

     } 
     else { 
      @Message("The password provided didn't match with the database."); 
     } 
    } 
} 

@functions{ 

    List<string> check(string newPassword, string confirmPassword) 
    { 
     //just a place holder 
     return false; 
    } 
} 

, 양식이 다시로드 될 때 메시지가 표시 될 수 있지만, RenderForm() 함수는 어떤을 찾을 수 없습니다 목록에 대한 참조. 이 메시지를 어떻게 표시 할 수 있습니까?

+1

컨트롤러의 액션 메소드로 모든 코드를 이동하고 모델 바인딩을 통해 유효성 검사를 사용해야합니다. – SLaks

+0

ASP.NET MVC를 사용하고 있으므로 jquery 유효성 검사를 사용하지 않는 이유는 무엇입니까? 또한보기에 컨트롤러 코드를 혼합하지 마십시오. MVC의 요점은 이러한 것들을 분리하는 것입니다. – Icarus

+0

UI에서 해당 코드를 분리하면 View에 해당 코드가 모두 포함되어 있지 않아야합니다. 컨트롤러가 그 것입니다. – Charles380

답변

1

웹 페이지 프레임 워크와 함께 제공되는 기본 제공 유효성 검사를 사용해야합니다. 나는 그것을 사용하는 방법을 설명하는 기사가 있습니다 : http://www.mikesdotnetting.com/Article/191/Validation-In-Razor-Web-Pages-2

+0

트릭을하지 않았습니다. 나는 면도기 1.0을 사용하고 있습니다 ... 어쨌든 고마워요. –

+1

2로 업그레이드 할 수 없습니까? 그렇지 않은 경우 자체 컨테이너를 작성하는 대신 유효성 검증 오류를 기록하는 데 ModelState 사전을 사용해야합니다. –