问题标签 [tempdata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3072 浏览

asp.net - 跨重定向使用 Asp.Net MVC TempData 时是否存在可能的“竞争条件”?

使用 TempData 时,我的理解是它只会为一个请求保留您放入其中的任何内容。因此,当使用 TempData 跨重定向保留数据时(为了使用 Post-Request-Get 模式),是否有可能来自用户的其他一些请求可能会在发送重定向的响应和发送重定向的响应之间进入服务器?用户的浏览器请求重定向到的页面?在这种情况下,get 将不再有可用的 TempData,对吗?

现在,我知道发生这样的事情非常罕见,但考虑到用户可能在另一个选项卡中打开了另一个页面,并且该页面上可能发生了 ajax 或定时回调请求,它突然不会在我看来这一切都是不可能的。它只是通常被认为太遥远而无法担心,还是我误解了什么?

编辑:更具体地说明我所询问的场景。

  1. 在 Tab 1 中,用户浏览到带有帖子表单的页面
  2. 在选项卡 2 中,用户浏览到网站上的另一个页面,该页面在计时器上执行 ajax 回调
  3. 在选项卡 1 中,用户将表单发布到服务器
  4. 当服务器收到帖子时,它会在 TempData 中保存一些数据并发送回重定向响应
  5. 在选项卡 2 中,发生了定时 ajax 回调,向服务器发送 GET 请求。TempData 已从会话中删除
  6. 在选项卡 1 中,浏览器接收重定向并发出 GET 请求
  7. 服务器处理 GET 请求并查找 TempData,但它不再存在
0 投票
1 回答
5127 浏览

asp.net-mvc - 什么是 TempData 集合在 asp.net MVC 中使用?

TempData 集合在 asp.net MVC 中的实际用途是什么,我需要该集合的优缺点,何时需要使用它,共享它的视图,或有关它的任何有用信息,最后是否有人可以告诉我何时使用它而不是 ViewData?

提前致谢

关闭作为ViewData 和 TempData 之间的差异的完全相同的副本?

0 投票
8 回答
57754 浏览

asp.net-mvc - ASP.NET MVC - TempData - 好的或坏的做法

我正在使用AcceptVerbsScott Gu 的 Preview 5 博客文章中详述的方法来处理 ASP.NET MVC 中的表单条目:

  • 用户通过 GET 获取一个空表单
  • 用户通过 POST 将填写的表单发布到相同的 Action
  • Action 验证数据,采取适当的行动,并重定向到新视图

所以我不必使用TempData. 也就是说,我现在必须在此过程中添加一个“确认”步骤,并且似乎需要使用TempData.

出于某种原因,我讨厌使用TempData它——它是围绕它设计的东西。

这是一个有效的担忧,还是我在编造?

0 投票
2 回答
13147 浏览

asp.net-mvc - ASP.NET TempData 在请求之间保持不变

我在我的控制器中使用如下临时数据 - 非常简单,当出现问题时:

然后在每个页面上,我都有一个用户控件,如下所示:

问题是,当我确实将错误添加到 tempdata 时,它会在第一个请求中正确显示,但在下一个请求中也会再次显示 - 这显然非常令人困惑,而不是理想的行为。

我没有使用任何 IoC,我确实在使用它时看到了同样问题的帖子。

0 投票
5 回答
24316 浏览

asp.net-mvc - 如何在 ASP.NET MVC 中禁用会话状态?

我想要一个非常轻量级的 ASP.NET MVC 站点,其中包括尽可能多地删除常用的 HttpModules 并禁用会话状态。但是,当我尝试执行此操作时,出现以下错误:

The SessionStateTempDataProvider requires SessionState to be enabled.

我在 web.config 中禁用了会话状态:

我了解 ASP.NET MVC 对 TempData 使用会话状态,但我不需要/想要 TempData - 我只想禁用会话状态。帮助!

0 投票
5 回答
7643 浏览

asp.net-mvc - ASP.NET MVC:跨多个请求保留 TempData

当我执行重定向时,我需要传递一些值。我想使用 TempData 来完成此操作,但遇到了问题。

我使用一个特殊的控制器来生成动态 JavaScript。例如,可能有这样的脚本标签:

...但没有脚本文件“Login.js”。相反,正在调用 ResourceController 的脚本操作:

问题是,这会占用下一个请求,这意味着我不能使用 TempData 从具有动态脚本的页面重定向。脚本操作(或整个 ResourceController)是否可以选择不使用 TempData,使其可用于下一个“真实”请求?

先感谢您!

0 投票
2 回答
4311 浏览

c# - ASP.NET MVC:如何处理交叉操作 TempData 和 ViewData

我正在尝试找到一种处理以下情况的好方法(我对此还是有点陌生​​):

用户可以使用 RPX/OpenId 提供程序通过我的站点进行注册。

第 1 步:用户通过提供者进行身份验证。提供者将一个临时令牌返回给我的一种操作方法。

第 2 步:我使用令牌获取用户的个人资料信息并加载允许他们输入任何缺少的必填字段和可选字段的视图。

我在第 2 步中使用了 2 种操作方法:一种使用令牌来处理信息的获取。获取授权信息并加载缺失/可选字段视图的第二个操作。

我通过 TempData 将授权信息传递给第二个操作。第二个操作可以处理验证,因此我有可能需要保留授权对象来处理超过 1 个请求。我不能使用令牌来重新生成授权信息,因为它在技术上是一次性令牌,并且重新生成请求会很愚蠢,因为它正在使用网络资源。

对于同一操作的任何后续请求,我如何将对象保留在我的 TempData 中,但删除任何重定向的对象?由于这在我的应用程序中可能是可重复的模式,我应该创建一个过滤器来自动处理这种情况吗?

例如,我想象一个过滤器属性,它将 TempData(如果有的话)合并到 ViewData - 但是我如何将我的数据保存到未来对同一操作的调用中?再次将其放入 TempData 中?如果我检测到重定向清空 TempData?

谢谢

0 投票
2 回答
349 浏览

asp.net-mvc - TempData[] 被擦除

我在 TempData 中存储了一个整数,在浏览我的网站 30-60 秒后,由于未知原因,它会定期被擦除。

我在设置值的地方有一个断点,它永远不会被设置为空,但不知何故,TempData 中的值被清空了。

知道为什么会这样吗?

0 投票
3 回答
9563 浏览

asp.net-mvc - TempData 不持久

我有一个在返回视图之前设置 TempData 的控制器,

此视图包含一个带有链接的部分视图,该链接转到另一个称为删除的操作方法,删除链接的代码是:

Delete 操作方法的代码是:

我遇到的问题是当我尝试获取 TempData["Route"]; 从 Delete 操作方法返回 null。

我想知道问题是否在于这是一个获取而不是一个帖子?如果是这样,我如何从我的表单中发布到 Delete ActionMethod ?

0 投票
1 回答
1182 浏览

asp.net-mvc - ASP.NET MVC CookieTempDataProvider.DeserializeTempData 返回 null

我一直在尝试使用 CookieTempDataProvider 使用 RedirectToAction 方法在帖子(实体更新)和获取(实体列表)之间传递基本消息。当使用默认的 TempData 实现时,这可以正常工作,但是当我使用 MVC Futures 项目中基于 cookie 的版本时,重定向后 TempData 字典为空。这是因为 TempDataDictionary 从 DeserializeTempData 方法返回为 null。我确切地知道问题发生在哪一行代码上,并且我知道如何解决它,但我不敢相信我是唯一遇到这个问题的人。

也许我使用了错误版本的 MVC Futures 项目,但我刚刚下载了ASP.NET MVC v1.0 源代码,问题肯定存在。有没有其他人使用 CookieTempDataProvider,它对你有用吗?

如我所见,CookieTempDataProvider 类的问题在第 62 行,它将反序列化的对象转换为 TempDataDictionary 而不是 IDictionary<string, object>。当我进行此更改时,一切正常。

其他人看到这个问题,还是只有我?