Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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菜单呈现不同于vs2008到vs2010_Asp.net_Visual Studio 2010_Menu - Fatal编程技术网

ASP.NET菜单呈现不同于vs2008到vs2010

ASP.NET菜单呈现不同于vs2008到vs2010,asp.net,visual-studio-2010,menu,Asp.net,Visual Studio 2010,Menu,我有一个最初使用vs2008构建的网站。我们最近升级到vs2010。当我将项目转换为vs2010项目时,我告诉它不要将目标框架从3.5更新为4.0。从所有引用和项目框架中我可以看出,所有内容都仍然在3.5版本中,但出于某种原因,我的ASP.NET菜单从呈现html表变为显示跨。我知道在4.0中,他们添加了Menu.RenderingMode属性,并将其默认为List而不是Table,但由于我正在构建的所有内容都是3.5,因此它不仅应该在Table模式下渲染,而且我甚至无法手动将其设置为Table

我有一个最初使用vs2008构建的网站。我们最近升级到vs2010。当我将项目转换为vs2010项目时,我告诉它不要将目标框架从3.5更新为4.0。从所有引用和项目框架中我可以看出,所有内容都仍然在3.5版本中,但出于某种原因,我的ASP.NET菜单从呈现html表变为显示跨。我知道在4.0中,他们添加了Menu.RenderingMode属性,并将其默认为List而不是Table,但由于我正在构建的所有内容都是3.5,因此它不仅应该在Table模式下渲染,而且我甚至无法手动将其设置为Table模式。有人知道这方面的修复方法吗(最好不要在spans上进行css攻击或升级到4.0)?我只想升级到4.0,但我们还没有准备好。我甚至不相信这会解决它,因为它不是用li标签(列表)呈现ol或ul,而是呈现范围。

菜单呈现问题与vs2008到2010转换无关。asp.net 3.5的asp.menu控件在chrome和safari中未正确呈现

对于Safari和Chrome来说,解决这一问题的最简单方法是在App_浏览器中包含您自己的浏览器文件,以便禁用此适配器

 <browsers>
  <!-- Disable the Menu Adapter for the Safari browser without changing the root browser file -->
  <browser refID="Safari1Plus">
    <controlAdapters>
      <adapter controlType="System.Web.UI.WebControls.Menu"
               adapterType="" />
    </controlAdapters>
  </browser>
</browsers>

菜单呈现问题与vs2008到2010转换无关。asp.net 3.5的asp.menu控件在chrome和safari中未正确呈现

对于Safari和Chrome来说,解决这一问题的最简单方法是在App_浏览器中包含您自己的浏览器文件,以便禁用此适配器

 <browsers>
  <!-- Disable the Menu Adapter for the Safari browser without changing the root browser file -->
  <browser refID="Safari1Plus">
    <controlAdapters>
      <adapter controlType="System.Web.UI.WebControls.Menu"
               adapterType="" />
    </controlAdapters>
  </browser>
</browsers>

你看过网站的文档类型了吗?我认为新文档类型中的
标记已经过时,因此它可能会将所有表呈现为
span
。我一直在使用WinMerge查看html呈现的差异(从vs2008到vs2010)。doctype看起来和我忘记提到的一样,它在vs2010的localhost中看起来不错,但是当发布到IIS(在我们的例子中是IIS 7)时,我们遇到了问题。它在IE和Firefox中看起来不错,但在Chrome中没有。另一件奇怪的事情是,当我从Firefox和IE中查看源代码时,表格就在那里,但当我从Chrome中查看源代码时,没有表格,只是跨度。试试看:你看到网站的文档类型了吗?我认为新文档类型中的
标记已经过时,因此它可能会将所有表呈现为
span
。我一直在使用WinMerge查看html呈现的差异(从vs2008到vs2010)。doctype看起来和我忘记提到的一样,它在vs2010的localhost中看起来不错,但是当发布到IIS(在我们的例子中是IIS 7)时,我们遇到了问题。它在IE和Firefox中看起来不错,但在Chrome中没有。另一件奇怪的事情是,当我从Firefox和IE中查看源代码时,表就在那里,但当我从Chrome中查看源代码时,没有表,只是跨度。试试看:它似乎仍然与vs2010相关,因为这个项目在vs2008而不是vs2010中发布时效果很好。我认为它是在处理您和Brent提到的不同于vs2008/vs2010的.browser文件-不确定如何处理,因为Request.browser.Adapters.Clear()调用修复了它。由于第三方的解决方案,我们已经有了.browser文件-只是直到现在才注意到或知道它们是什么。这里我还有vs2008的span。无论如何,ASP.NET的默认浏览器文件将菜单控件指向Safari浏览器的特殊适配器。不幸的是,ASP.NET解析了Chrome中的UserAgent并将其识别为Safari。它似乎仍然与vs2010相关,因为该项目在从vs2008(而不是vs2010)发布时运行良好。我认为它是在处理您和Brent提到的不同于vs2008/vs2010的.browser文件-不确定如何处理,因为Request.browser.Adapters.Clear()调用修复了它。由于第三方的解决方案,我们已经有了.browser文件-只是直到现在才注意到或知道它们是什么。这里我还有vs2008的span。无论如何,ASP.NET的默认浏览器文件将菜单控件指向Safari浏览器的特殊适配器。不幸的是,ASP.NET从Chrome解析UserAgent并将其识别为Safari。