ASP.NET MVC:跨多个请求保留TempData

use*_*003 2 asp.net-mvc tempdata

执行重定向时,我需要传递一些值.我想使用TempData来实现这一目标,但遇到了一个问题.

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

<script type="text/javascript" src="/Resource/Script/Login.js"></script>
Run Code Online (Sandbox Code Playgroud)

...但是没有脚本文件"Login.js".相反,正在调用ResourceController的Script操作:

public class ResourceController : Controller {
    public ActionResult Script(string id) {
        // set script = some code
        return JavaScript(script);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,这会占用下一个请求,这意味着我无法使用TempData从具有动态脚本的页面重定向.有没有什么方法脚本操作(或整个ResourceController)可以选择不使用TempData,允许它可用于下一个"真正的"请求?

先感谢您!

Tor*_*tad 8

Asp.Net团队通过引入TempData.Keep()消除了MVC 2中的这种痛苦,它确保所有TempData项目都被标记为可以再生一个请求.从您想要的所有操作调用此不是吃的TempData.

阅读Jacques Eloffs博客文章中介绍Keep()背后的理由

在MSDN文档中保留()


Ale*_*yev 5

你可以放线

<script type="text/javascript" src="/Resource/Script/Login.js"></script>
Run Code Online (Sandbox Code Playgroud)

在视图中使用TempData之后.

本文也可能对您有用:ASP.NET MVC TempData实际上是RedirectData