사이트 구성원이 계정의 비밀번호를 변경할 수 있도록 양식을 만들고 있는데 비밀번호를 입력하는 동안 사용자가 실수 한 내용을 설명하는 메시지를 표시하고 싶습니다. 짧음, 영숫자가 아닌 문자가 필요함 등). 필드 이름 옆의 같은 페이지에 이러한 메시지를 표시하고 싶습니다. 여기에 내 코드입니다 : 오류가 발견 된 때 채워질 수있는 목록을 추가하려고했습니다'전역'변수 면도기
@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() 함수는 어떤을 찾을 수 없습니다 목록에 대한 참조. 이 메시지를 어떻게 표시 할 수 있습니까?
컨트롤러의 액션 메소드로 모든 코드를 이동하고 모델 바인딩을 통해 유효성 검사를 사용해야합니다. – SLaks
ASP.NET MVC를 사용하고 있으므로 jquery 유효성 검사를 사용하지 않는 이유는 무엇입니까? 또한보기에 컨트롤러 코드를 혼합하지 마십시오. MVC의 요점은 이러한 것들을 분리하는 것입니다. – Icarus
UI에서 해당 코드를 분리하면 View에 해당 코드가 모두 포함되어 있지 않아야합니다. 컨트롤러가 그 것입니다. – Charles380