- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在 aspnet vNext 中创建一个 ActionFilter。在此过滤器中,我想访问 TempData 和 ViewData(两者都在以前版本的 Controller 中可用)。我覆盖了该方法public override void OnActionExecuting(ActionExecutingContext filterContext)
进入filterContext
我有 Controller 但是是object
而不是 ControllerBase
.我应该是一个 ControllerBase
,因为在以前版本的 MVC 中,ControllerContext
(ActionExecutingContext
的基类)是一个 ControllerBase
, here是codeplex中的源代码。我知道这可能是因为 POCO Controller 。
所以,问题是,如果 Controller 是对象,如何访问 TempData 和 ViewData。简单地做一个向下转换(像这样的 (Controller)filterContext.Controller
)或者有一个最好的方法来做到这一点。
更新
如果在 this blog post 中解释,我想实现但使用 aspnet 5。
最佳答案
要从操作过滤器中访问 TempData,您可以获得名为 ITempDataDictionary
的服务来自 DI。
要从 DI 获得此服务,您可以执行类似 actionContext.HttpContext.RequestServices.GetRequiredService<ITempDataDictionary>()
的操作来自你的 OnActionExecuting
方法。如果您愿意,也可以通过使用 ServiceFilterAttribute 来使用构造注入(inject)。
注意:
默认情况下,TempData 取决于 Session
功能(即 TempData 的数据存储在 session 中),因此您需要做一些事情才能使其正常工作。
引用 Microsoft.AspNet.Session
和 Microsoft.Framework.Caching.Memory
包。
在你的ConfigureServices
方法,请执行以下操作:
services.AddCaching();
services.AddSession();
在你的Configure
方法,注册 Session
中间件(这是为传入请求创建/附加 session 的中间件)并在 注册 MVC 之前执行此操作。
app.UseSession();
app.UseMvc(...)
关于c# - aspnet vNext ActionFilter 和 TempData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30432766/
为什么在 TempData 中添加很多项时 TempData 总是 null? 我在 Controller 中的代码: TempData[Partial1.TempDataKey] = "bla bl
我在某些 View /操作中使用了 TempData,但我想将其提取到某个类中。问题是如果我尝试在 Controller 的构造函数中创建我的类,那里的 TempDate 为 null。更好的是,我想
我问这个question昨天。 我相信我已经在使用 TempData 中找到了答案。我的新问题是通过操作(如在向导步骤中)沿着 TempData 串接是否会“保留”所有先前的 TempData,或者我
我想访问 临时数据 在我的助手中获取闪现消息(如在 ruby 中) 我收到一个运行时错误 The name 'TempData' does not exist in the current con
我有一个 Controller 将逻辑寻找: session 值 //checks value null etc.. for existing record in session memory.
有一个similar question多年前关于旧的 ASP.NET。我想知道 .NET Core 是否有所不同。 在链接的问题中,它指出 TempData 存储在 Session 中,默认情况下它与
Mt textbook 说 TempData 一直存在直到它被读取,这意味着它会在读取后被销毁,但我确实在这样的 View 中看到了一些代码: @if (TempData["message"] !=
我正在尝试将一些值从一个 Controller 传递到另一个 Controller ,例如 TempData["data"]="data"; 但它说 Tempdata 在当前上下文中不存在。所以我决定
我有一个具有以下操作的 Controller : [HttpGet] public IActionResult Index() { return View(); } [HttpPost] [R
如何在 asp.net mvc 中清除特定的 TempData。我使用了两个以上的 TempData 变量。我可以清除其中的特定一些。 TempData["USD"] = "updated"; Tem
我正在开发一个 ASP.NET MVC 3 Web 应用程序,在用户未登录的情况下,我使用 TempData 存储模型对象。 流程如下: 使用提交表单。 代码(特殊操作过滤器)将模型添加到 TempD
我有一个类似于下面的 Controller 操作,TempData 由我的框架初始化。我注意到 TempData 在读取后不会清除该值,如操作“EmployeeUnderAge”中所示。 TempDa
我想在重定向中保持状态并且想在重定向中保持一些状态。我认为 MVC 中的 TempData 会在 Rails 中执行此操作并闪烁消息。 ServiceStack 中的任何等效功能。我想在自己组装之前先
有人可以解释一下MVC中TempData的目的。 我了解它的行为类似于ViewBag,但除此之外,它还能做什么。 最佳答案 TempData is meant to be a very short-l
我有一些奇怪的事情。我的 MVC4 项目在转换 TempData 中模型对象的内容时遇到问题。我可以使用监 window 口看到该对象在 TempData 中正确定义,但转换失败,不会引发任何异常。
关于应该在 TempData 字典中放置多少数据,是否有上限或最佳实践? 最佳答案 查看这篇描述使用 TempData 时最佳实践的帖子: When to use ViewBag, ViewData,
我想将两个值从后操作返回到 RedirectToAction 中的 View 。 TempData[] 似乎是理想的选择,因为数据仅用于在用户保存后显示成功消息。 我想在成功消息中显示用户刚刚保存的图
在 MVC 应用程序中,我想获取外部 .js 文件中的 ViewBag、ViewData、TempData 值。我不想在 view.cshtml 中编写脚本,所以我向其中添加了外部 js 文件。但我无
我在 controller_method 的 TempData 中保存了一些值。但是当我在 view 中访问它时,我什么也得不到... Controller 代码: public ActionResu
我正在从 Controller 发送两个值,保存在 TempData 中。但由于某些语法错误,无法在我的 View 中比较它们。代码: @{ var i = TempData
我是一名优秀的程序员,十分优秀!