Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 动态部分-viewdata空引用错误_Asp.net_Asp.net Mvc - Fatal编程技术网

Asp.net 动态部分-viewdata空引用错误

Asp.net 动态部分-viewdata空引用错误,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我正在运行一个使用MVC2和.NET4.0的站点 我最近在站点中添加了一个新的局部视图,如下所示: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> <% if (!(bool)ViewData["Master_ShowGuide"] ) { %> <%= Html.NavigationButton("Guide", "butto

我正在运行一个使用MVC2和.NET4.0的站点

我最近在站点中添加了一个新的局部视图,如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>

<%  if (!(bool)ViewData["Master_ShowGuide"] )
   { %>
   <%= Html.NavigationButton("Guide", "button", "infoIcon", Url.Content("~/Help/ Guide.pdf"), new { title = "Click here to view an in depth user guide." }, new { target="_blank" })%>
<%} %>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

当时我没有注意到的是在这个视图中添加了
部分,以前我的部分看起来像这样:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>

<%  if (!(bool)ViewData["Master_ShowGuide"] )
   { %>
   <%= Html.NavigationButton("Guide", "button", "infoIcon", Url.Content("~/Help/ Guide.pdf"), new { title = "Click here to view an in depth user guide." }, new { target="_blank" })%>
<%} %>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

此部分内容使用以下方式显示:

<% Html.RenderPartial("SubLinks"); %>

在我的主页上

这在我的开发环境中似乎可以正常工作,但是当部署到服务器时,我现在遇到了问题,我的
ViewData[“Master\u ShowGuide”]
为空。我知道情况并非如此,因为它在母版页的其他地方也可以使用

有人能解释为什么会出现这种情况吗?我已经通过从部分定义中删除
类型“修复”了这个问题,但我对原因很好奇

如果有帮助的话,我的站点运行在与其他运行MVC 3的站点一起的环境中


作为补充,我要指出:

  • 用户没有看到这个错误,只是(通过ELMAH)向我报告了它

  • 此代码在我的测试站点上正常工作,但在我的预生产部署站点(与测试站点位于同一服务器上,当前运行相同的代码)上出现空引用错误时失败

  • 我有点困惑



    找到了这个问题的答案(关于它发生的根本原因),但我仍然不确定为什么从部分视图声明中删除dynamic也会“修复”它。如果有人能解释的话,我很想听听。

    找到了问题所在,准备为子孙后代记录下来

  • 有一个指向图像的url,在使用Html.RenderAction输出的不同部分视图中生成。此url不正确,导致返回404错误
  • 我的开发系统上没有注意到这一点

  • 在live上,在web.config中启用了自定义错误后,此404错误试图返回我们已找到的“filenotfound”页面。不幸的是,此错误页面使用的母版页与最初导致问题的母版页相同,并且它出错了,正如您最终重定向到的主“错误发生”页面一样
  • 这导致返回一个500服务器错误,这似乎中断了后续渲染部分的viewdata

    firebug万岁,这帮我找到了这个

    如果你在某个时候发现自己在这里,希望这能帮助你