나는 유효성 검사를 위해 동일 컨트롤러에서 한 동작에서 다른 동작으로 ModelState를 전달하려고합니다. 그러나 모델 상태는 업데이트되지 않습니다. 나는 TempData [ "____ MvcContrib_ValidationFailures____"]가 포워딩 액션에서 ModelStateDictionary를 포함하고 있음을 알았지 만, 이것이 현재 나의 ModelState로 자동 전송되어야한다고 생각 했는가? 내가 어디로 잘못 가고 있니?MVCContrib의 ModelStateToTempData 특성이 작동하지 않는 이유는 무엇입니까?
ASP.NET MVC2 및 MVCContrib 2.0.36.0을 사용하고 있습니다. 또한이 속성을 사용하여 컨트롤러를 꾸미려고했지만 결과는 같습니다.
코드 :
[HttpGet]
[ModelStateToTempData]
public ActionResult NewsEventsSignup()
{
var newsEventsSignupDetails = this.TempData.GetItem<NewsEventsSignupDetails>();
var viewModel = _newsEventsSignupPageViewModelMapper.MapFrom(newsEventsSignupDetails);
return this.View(viewModel);
}
[HttpPost]
[ModelStateToTempData]
[ValidateAntiForgeryToken]
public ActionResult NewsEventsSignup(NewsEventsSignupFormViewModel newsEventsSignup)
{
ActionResult resultToReturn;
var newsEventsSignupDetails = _newsEventsSignupDetailsMapper.MapFrom(newsEventsSignup);
try
{
_newsEventsSignupTasks.SignupForNewsAndEvents(newsEventsSignupDetails);
resultToReturn = this.RedirectToAction(x => x.Index());
}
catch (RulesException e)
{
e.AddModelStateErrors(this.ModelState); // from xVal
this.TempData.AddItem(newsEventsSignupDetails); // for showing invalid input
resultToReturn = this.RedirectToAction(x => x.NewsEventsSignup());
}
return resultToReturn;
}
OnActionExecuted 필터를 알지 못했습니다. 검증 요약은 진실을 밝혀주었습니다. 내 오류는 "이름"과 "전자 메일"대신 ". 이름"및 ". 전자 메일"때문에 입력 필드의 이름/ID가 무엇인지 입력 또는 필드 유효성 검사 오류 클래스가 설정되지 않습니다. 이상한. 이유는 모르겠다. 삽입 중입니다. 그렇지 않으면, 일들이 작동하는 것처럼 보입니다. –
질문을 게시 한 Malcolm과 Chris F에게이 문제에 대해 직접 고민했습니다. – JoseMarmolejos