내 컨트롤러 액션 :컨트롤러/액션에 ModelState 및 AddModelError가 지속됩니까?
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Login()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string UserName, string Password, bool RememberMe)
{
var userNameValidationResults = _validatorProvider.Validate<IMailAddressValidator>(UserName);
foreach (var result in userNameValidationResults.Where(r => !r.Passed)) {
ModelState.AddModelError("UserName", result.ErrorMessage);
}
var passwordValidationResults = _validatorProvider.Validate<IStringLengthValidator>(Password);
foreach (var result in passwordValidationResults.Where(r => !r.Passed)) {
ModelState.AddModelError("Password", "Please enter a password.");
}
if (!ModelState.IsValid)
return View();
bool validUser = _userMembershipService.ValidateUser(UserName, Password);
if (!validUser) {
ModelState.AddModelError("_FORM", "Invalid e-mail address and/or password.");
return View();
}
_userAuthenicationService.Login(UserName, RememberMe);
return RedirectToAction("Index", "Home");
}
내보기 :
<h2>Login</h2>
<%= Html.ValidationSummary() %>
<% using (Html.BeginForm()) { %>
<%= Html.TextBox("UserName") %>
<%= Html.Password("Password") %>
<%= Html.CheckBox("RememberMe") %>
<input type="submit" value="Login" />
<% } %>
내가 유효성 검사 오류 후 다시 양식을 제출하면, 나는 ValidationSummary
에서 다른 오류 (같은 정확한 오류)를 얻는다. 왜 그런 일이 일어나는거야? 감사. 내가 무엇을 의미
편집 내가 n
가 제출의 숫자가 오류의 n
넘버를 가지고있다.
편집 2 내가 지금은들이 지속적인 남아있는 것처럼 보이는 문제가 오전 무엇 - 심지어 양식 필드 값이 변경되지 않습니다를. 위의 코드를 업데이트했습니다. 또한 Castle Windsor를 IoC 컨테이너로 사용하고 있지만 이것이 내 문제의 원인이 될 것이라고 생각하지 않습니다. 그러나 그럴 수있는 경우, 여기 컨트롤러를 등록 할 때 사용하는 소스가 있습니다.
container.Register(
AllTypes
.FromAssemblyNamed("Aplication")
.BasedOn<IController>()
.Where(t => t.Name.EndsWith("Controller"))
.Configure(c => c.LifeStyle.Is(LifestyleType.Transient))
.WithService
.FirstInterface()
);
질문에 대해 설명해 주시겠습니까? "양식 제출"이란 의미는 무엇입니까? 아마도 ModelState에서 먼저 오류를 제거해야합니다. –
두 번째로 유효성 검사기가 오류를 다시 생성하지 않습니까? ModelState 및 오류가 호출간에 유지되지 않습니다. 양식 HTML 코드를 게시 할 수 있습니까? –
'break;'로 루프 제어 검사를했기 때문에 그러지 않아야합니다. –