- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Mt textbook 说 TempData 一直存在直到它被读取,这意味着它会在读取后被销毁,但我确实在这样的 View 中看到了一些代码:
@if (TempData["message"] != null)
{
<div class="alert alert-success">@TempData["message"]</div>
}
所以我很困惑,这不是TempData["message"] != null
吗?已经访问了 TempData,为什么在 <div>
中仍然可以访问它?
另一个问题是,假设我们有一个 XXXController,其中一个操作方法使用 TempData 作为:
[HttpPost]
public IActionResult Edit(Product product)
{
...
TempData["message"] = $"{product.Name} has been saved";
...
}
使用Xunit和Moq进行单元测试时,代码如下:
Mock<ITempDataDictionary> tempData = new Mock<ITempDataDictionary>();
XXXController target = new XXXController(mock.Object)
{
TempData = tempData.Object
}
为什么要初始化TempData,不是说controller instanced创建的时候就可以直接赋值给TempData吗?
最佳答案
Isn't that
TempData["message"] != null
already accessingTempData
, how come it can still be accessed in the<div>
?
是的,TempData["message"] != null
正在访问临时数据值,因此它被标记为不会为下一个请求保留。
除非读取临时数据,否则会为下一个请求保留临时数据。然而,它不会立即被删除。因此,您可以在处理同一个请求时多次读取同一个临时数据,但它不会在下一个请求中出现。
逻辑基本上是临时数据提供者跟踪字典以及它应该为下一个请求保留哪些键。它从字典中的每个键开始,因此所有内容都将保留以供下一个请求使用。当您访问一个值时,该键将从键列表中删除以保留。当您设置一个值时,该键将被添加到要保留的键列表中。
Why do I need to initialize the
TempData
, isn't that when controller instanced is created, we can assignTempData
immediately?
默认情况下, Controller 实际上并没有太多内容。该框架的构建方式使您实际上不需要继承 Controller
或 ControllerBase
你仍然可以创建一个完美的 Controller 。像 HttpContext
这样的访问器, ViewData
, 或 TempData
, 只是空槽,最终会在 ASP.NET Core 执行操作时被填充。然而,它们不会在创建过程中自动设置。
这意味着在测试中,ASP.NET Core 不会为您执行操作,您必须自己处理并设置这些插槽。因此,如果您依赖这些属性中的任何一个,则必须先创建它们,然后才能对其进行测试。
关于c# - TempData 只能访问一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57157757/
为什么在 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
我是一名优秀的程序员,十分优秀!