【发布时间】:2015-05-25 06:56:07
【问题描述】:
我正在尝试在 aspnet vNext 中创建一个 ActionFilter。在此过滤器中,我想访问 TempData 和 ViewData(在以前版本的 Controller 中都可用)。我覆盖了该方法
public override void OnActionExecuting(ActionExecutingContext filterContext)
进入filterContext 我有控制器,但它是object 而不是ControllerBase。我应该是ControllerBase,因为在先前版本的 MVC 中,ControllerContext(ActionExecutingContext 的基类)是ControllerBase,here 是 codeplex 中的源代码。我知道这可能是因为 POCO 控制器。
所以,问题是,如果控制器是对象,如何访问 TempData 和 ViewData。简单地做一个向下转换(像这样(Controller)filterContext.Controller)或者有一个最好的方法来做。
更新
如果在this blog post 中解释它,但使用 aspnet 5,我想实现的目标。
【问题讨论】:
-
您能否提供更多信息,说明您想要实现的场景是什么?
TempData可以通过 DI 的ITempDataDictionary服务访问。关于ViewData,它可能取决于场景...如果您正在短路请求,那么您可以自己新建ViewDataDictionary并在ViewResult上设置ViewData属性,例如。或者,如果您只想将数据添加到控制器操作添加更多数据的ViewData,那么我相信向下转换就可以了。 -
我想将数据设置为稍后在下一个请求获取它。作为一个具体的例子,我想实现与this blog post 中解释的相同。我将在问题中添加此信息。
-
@KiranChalla,我认为您的评论是我问题的答案。我将使用依赖注入。你能发帖回答吗?
标签: c# asp.net-mvc asp.net-core