MVC Contrib PassParametersDuringRedirect-停止在第一次重定向之后持续存在的值
本文关键字:之后 存在 重定向 第一次 PassParametersDuringRedirect- Contrib MVC | 更新日期: 2023-09-27 17:58:22
MVcControlib的新手,所以可能我使用错误,但我在使用PassParametersDuringRedirect属性时遇到问题。
我遇到的问题是,正如预期的那样,当我第一次重定向时,参数值被正确传递,问题是在这之后,值仍然保持不变,而如果我使用TempData(我不想这样做),那么这些值只在第一次调用时保持不变。
代码如下。当我填充模型时。ErrorMessage,然后重定向到Shelf,一切都如预期的那样进行,但是所有后续对Shelf的调用仍然填充了ErrorMessage。
[PassParametersDuringRedirect]公共类NewCapitalStructureController:BaseController{专用只读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));
}
public ActionResult Shelf(NewCapitalStructureViewModel model)
{
if (model == null)
model = new NewCapitalStructureViewModel();
ControllerContext.Controller.TempData.Clear();
return View("Shelf", model);
}
这将清除TempData中的所有参数。
为了解决这个问题,我创建了一个新属性(再次继承自ActionFilterAttribute
),并用新属性装饰了上面的Shelf方法:
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
filterContext.Controller.TempData.Clear();
}
我很想知道我是不是在哪里出错了。