动作中的响应标头在视图中消失 - asp net mvc

时间:2011-12-25 14:20:25

标签: c# .net asp.net-mvc asp.net-mvc-3 http-headers

在控制器操作中,响应标头设置如下:

HttpContext.Response.AddHeader("key", "value");

在渲染视图中,Response.Headers [“key”]似乎为null(在ajax请求中为btw,设置并检索标头没有任何问题)。这有什么特别的原因,或者这是我代码中的一个愚蠢的错误?

2 个答案:

答案 0 :(得分:3)

您只能添加响应标头,但除非您在IIS 7集成管道模式下运行,否则无法读取它们。在标准模型中运行时,在您尝试在代码中读取它们时,会在稍后阶段发送HTTP响应标头。这已在documentation

中说明
  

只有集成了IIS 7.0才支持Headers属性   管道模式和至少.NET Framework 3.0。当你尝试   访问Headers属性,这两个条件之一不是   遇到了,抛出了PlatformNotSupportedException。

这就是说,视图应该访问的是视图模型,而不是响应头。因此,在您的控制器操作中,您将构建一个视图模型,其中包含视图所需的所有信息,并将其传递给视图以供使用。请记住:视图不会提取数据,视图使用以视图模型的形式从控制器处理的数据。

答案 1 :(得分:1)

在我看来,您正试图将控制器中的一些数据传递给您的视图。如果是这种情况,则应使用ViewData或ViewBag。

在您的控制器中:

ViewData["key"] = "value";

在您的视图中

<span>Your key: @ViewData["key"]</span>