问题标签 [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 投票
2 回答
1653 浏览

redirect - 在 RenderAction 调用之间维护 ViewData

我正在我网站的每个页面上使用 Html.RenderAction 呈现一个常见的登录表单。

如果用户在文本框中输入他们的详细信息并单击“提交”,它会向处理登录的控制器发出 POST。

如果他们犯了错误,例如输入了无效的电子邮件地址,它将在 ModelState 中填充错误消息,然后重定向回他们之前所在的任何页面。

问题是,因为 RenderAction 作为单独的请求发生,我丢失了 ViewModel。

即使我将它放入 TempData 它也会丢失,因为 TempData 在每个单独的请求中都会被刷新。

有没有办法在连续的 Html.RenderAction 调用之间保存数据?

如果没有,关于我如何破解这个的任何建议?(应该把数据放在Session中?)

0 投票
7 回答
80276 浏览

asp.net-mvc - 何时在 ASP.Net MVC 中使用 TempData 与 Session

我正在尝试掌握 MVC 框架的窍门,所以请耐心等待。

现在,我使用会话存储的唯一目的是存储当前登录的用户。我的网站很简单。对于此示例,请考虑三个域对象:Person、Meeting 和 File。用户可以登录并查看会议的“仅限成员”个人资料,并可以向其中添加文件,或者在未登录的情况下查看会议的公开“个人资料”。

因此,从会议的私人资料中,使用登录用户,我有一个“添加文件”链接。此链接路由到 FileContoller.Add(int meetingId)。通过此操作,我得到了用户想要使用会议 ID 添加文件的会议,但是在发布表单后,我仍然需要知道用户正在向哪个会议添加文件。这就是我的问题所在,我应该通过 TempData 传递“当前正在与之交互”的会议,还是将其添加到 Session 存储中?

这就是我目前设置添加操作的方式,但它不起作用:

编辑:

根据大多数答案,任何人都可以提供任何示例,说明应该在 TempData vs Session 中存储哪种数据(消息除外)?

0 投票
1 回答
17593 浏览

asp.net-mvc - ASP.NET MVC 异常处理

可以在控制器的操作中捕获我的异常吗?有没有更好的方法呢?我实际上是在控制器中捕获我的异常并使用 TempData 向用户显示消息,但我对这种方法有一种奇怪的感觉。我一直在浏览,但我没有找到任何适合我的东西。

0 投票
3 回答
1414 浏览

asp.net-mvc - 告诉动作/控制器持久化 TempData

我了解 TempData 旨在仅在单个页面请求之间工作。但我认为有一种情况我认为会破坏预期的功能。

我使用控制器而不是处理程序来传递图像。如果这是最佳做法,我现在不知道,但它对我来说效果很好。但问题是,每次调用其中一个图像操作显然都会消耗一个 TempData 信用。

MVC 中是否有办法说“此控制器/操作超出了正常页面请求的范围”,因此要么保留 TempData,要么完全从 TempData 生命周期中删除自己?

富有的

0 投票
1 回答
1250 浏览

asp.net - 在 App_Data 中写入文件会导致 tempdata 为空

我有一个小的 asp.net MVC 1 Web 应用程序,它可以存储文件并在 App_Data 目录中创建目录。当写操作成功时,我向临时数据添加一条消息并执行redirectToRoute。问题是执行操作时临时数据为空。如果我将文件写入 Web 应用程序根目录之外的目录中,则临时数据不为空,并且一切正常。为什么在 app_data 中写入似乎可以清除 tempdata 的任何想法?

编辑:如果 DRS.Logic.Repository.Manager.CreateFile(path, hpf, comment) 在 App_Data 中写入,则在重定向到的操作中 TempData 将为空。如果它是 Web 应用程序根目录之外的目录,那很好。没有异常被抛出。

0 投票
3 回答
825 浏览

asp.net - 等效于来自 ASP.NET MVC for ASP.NET 的 ViewData?

ASP.NET MVC for ASP.NET 中的 ViewData/TempData 对象是否有等效项?

我想做的是让一个 Session 项目只在一个请求中存活。

提前致谢!

编辑:

问题是我有一个更新和创建的视图。当视图处于更新模式时,会话项被填充或者它必须已经被填充(!)并且在创建模式下会话项为空。因此,当我处于创建模式并将页面发送回服务模式时,模式更改为编辑模式,并且视图上的一个按钮已启用,因为会话项目已被填充。模式取决于会话项目。并且会话项可以由另一个视图或我成功创建联系人时填充。会话项值是contactId。

0 投票
4 回答
15377 浏览

asp.net-mvc - 将数据从控制器传递到视图,返回到控制器,返回到视图

我是 ASP.NET MVC 的新手。在使用传统的 ASP.NET 模型这么久之后,我需要一些时间来理解这个模型。

我正在通过 NerdDinner 了解事情是如何运作的。

所以,我有一个需要通过几个视图的对象。与文章NerdDinner 第 6 步:ViewData 和 ViewModel类似。

我第一次保留从 Get 到 Post 的数据,然后将其放入 TempData 并将其传递给另一个操作 (AnotherAction)。一旦我在 Get 上获得我的数据,我就无法在 Post 上保留它。

这是我的代码:

0 投票
1 回答
1899 浏览

asp.net-mvc - 来自 Global ASAX 的 TempData

有人可以发布关于如何从 Global.asax.cs 中访问 TempData 字典对象的示例代码吗?

0 投票
2 回答
1675 浏览

asp.net-mvc - asp.net mvc:TempData 和 AuthorizeAttribute

作为这个问题的后续,我想知道我的 TempData 发生了什么。

场景一:

  • 用户登录
  • 用户提供电子邮件地址
  • 用户收到带有验证码的电子邮件
  • 用户点击验证 url
  • 用户已验证
  • 成功消息通过验证操作中设置的 TempData 显示

场景二:

  • 用户登录
  • 用户提供电子邮件地址
  • 用户注销/超时
  • 用户收到带有验证码的电子邮件
  • 用户点击验证 url
  • 用户已验证
  • 成功消息未通过验证操作中设置的 TempData 显示

现在,我看不到用户登录验证的理由。在场景 1 中,我在 TempData 中放置了一条“Success”消息,并返回 RedirectToAction(“Index”)。索引操作有一个 AuthorizeAttribute - 如果他们没有登录,他们将被重定向到登录屏幕(单独的控制器)。

我希望登录屏幕显示我的消息,但在这种情况下 TempData 似乎被清除了。我是否误解了 TempData 生命周期?它仅适用于同一控制器中的请求吗?

0 投票
1 回答
566 浏览

asp.net-mvc - 用于错误请求的 ASP.NET MVC TempData

我使用 TempData 在重定向期间保留 ModelState(使用 MvcContrib 技术)。这工作正常。然而,在极少数情况下,用户中止请求,然后立即触发另一个请求(例如,快速单击另一个菜单项)。这会导致 ModelState 错误出现在它不属于的该页面上。

问题是 TempData 存储在 Session 中。这意味着,任何请求都可以获取它,例如首先到达服务器的请求。

是否有任何已知的解决方法?例如,在 TempData 中保留“目标页面”以及保存的 ModelState。