在控制器操作中,响应标头设置如下:
HttpContext.Response.AddHeader("key", "value");
在渲染视图中,Response.Headers [“key”]似乎为null(在ajax请求中为btw,设置并检索标头没有任何问题)。这有什么特别的原因,或者这是我代码中的一个愚蠢的错误?
答案 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>