【发布时间】:2011-03-06 10:21:49
【问题描述】:
出于验证目的,我只是尝试将 ModelState 从一个操作传递到同一控制器中的另一个操作。但是,模型状态不会更新。我看到 TempData["____MvcContrib_ValidationFailures____"] 包含来自转发操作的 ModelStateDictionary,但我认为这应该自动转移到我当前的 ModelState 中?我哪里错了?
我正在使用 ASP.NET MVC2 和 MVCContrib 2.0.36.0。我也试过用这个属性装饰Controller,但是结果是一样的。
代码:
[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;
}
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-2 mvccontrib modelstate