【发布时间】:2011-06-02 23:07:17
【问题描述】:
MVcContrib 的新手,所以也许我使用不正确,但我在使用 PassParametersDuringRedirect 属性时遇到了问题。
我遇到的问题是,正如预期的那样,当我第一次重定向时,参数值被正确传递,问题是在此之后这些值仍然存在,而如果我使用 TempData(我不想这样做),则这些值仅在第一次调用时保持不变。
代码如下。当我填充 model.ErrorMessage 然后重定向到 Shelf 时,一切都按预期工作,但是对 Shelf 的所有后续调用仍然填充了 ErrorMessage。
[PassParametersDuringRedirect] 公共类 NewCapitalStructureController : BaseController { private readonly IShelfService ShelfService;
public NewCapitalStructureController(IRepository repository, IPrincipalProxy principal, IShelfService shelfService)
: base(repository, principal)
{
this.shelfService = shelfService;
}
public ActionResult Shelf(NewCapitalStructureViewModel model)
{
if (model == null)
model = new NewCapitalStructureViewModel();
return View("Shelf", model);
}
public ActionResult SaveShelf(NewCapitalStructureViewModel newCapitalStructureViewModel)
{
var result = shelfService.CreateShelf(newCapitalStructureViewModel.ShelfName);
var model = new NewCapitalStructureViewModel();
model.ShelfID = result.ID;
if (!result.Success)
model.ErrorMessage = result.Message;
return this.RedirectToAction(x=> x.Shelf(model));
}
【问题讨论】:
-
我们也刚开始使用此属性,并注意到同样的问题。查看PassParamtersDuringRedirectAttribute.cs的源码:
filterContext.Controller.TempData.Keep(storedParameter.Key);
标签: c# asp.net-mvc mvccontrib