【问题标题】:ASP.NET Menu rendering different from vs2008 to vs2010ASP.NET 菜单渲染从 vs2008 到 vs2010 不同
【发布时间】:2012-02-17 03:21:23
【问题描述】:

我有一个最初使用 vs2008 构建的网站。我们最近升级到了 vs2010。当我将项目转换为 vs2010 项目时,我告诉它不要将目标框架从 3.5 更新到 4.0。据我所知,查看所有参考资料和项目框架,一切都还在 3.5 上,但由于某种原因,我的 ASP.NET 菜单从呈现 html 表变为跨度。我知道在 4.0 中他们添加了 Menu.RenderingMode 属性并将其默认为 List 而不是 Table 但由于我正在构建的所有内容都是 3.5 不仅应该以 Table 模式呈现,而且我什至不能手动将其设置为 Table 模式。任何人都知道解决这个问题(最好是跨跨度的css hack或升级到4.0)?我只想升级到 4.0,但我们还没有准备好。我什至不相信会修复它,因为它不是使用 li 标签(列表)渲染 ol 或 ul,而是渲染跨度。​​

【问题讨论】:

  • 您查看过网站的 DOC 类型吗?我认为您的新 DOC 类型中的 table 标记已过时,因此它可能会将所有表格呈现为 spans。请尝试调查一次。
  • 我一直在使用 WinMerge 来查看 html 渲染的差异(从 vs2008 到 vs2010)。看起来文档类型保持不变 ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • 我忘记提到的一件事是它在 vs2010 的 localhost 中看起来不错,但是当发布到 IIS(在我们的例子中为 IIS 7)时,我们遇到了问题。它在 IE 和 Firefox 中看起来不错,但在 Chrome 中却不行。
  • 另一个奇怪的事情是,当我从 FireFox 和 IE 查看源代码时,表格就在那里,但是当我从 Chrome 查看源代码时 - 没有表格 - 只是跨度。

标签: asp.net visual-studio-2010 menu


【解决方案1】:

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

为 Safari 和 Chrome 解决此问题的最简单方法是在 App_Browsers 中包含您自己的浏览器文件以禁用此适配器。

 <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>

并且 只需将以下代码粘贴到页面或母版页的加载事件中(如果使用)。

if (Request.UserAgent.IndexOf("AppleWebKit") > 0)
 {
   Request.Browser.Adapters.Clear();
 }

【讨论】:

  • 它似乎仍然与 vs2010 相关,因为这个项目在从 vs2008 发布而不是 vs2010 时运行良好。我认为它正在以某种方式处理您和 Brent 提到的不同的 .browser 文件(来自 vs2008 / vs2010) - 不知道是如何解决的,因为 Request.Browser.Adapters.Clear() 调用修复了它。由于第 3 方解决方案,我们已经拥有 .browser 文件 - 只是直到现在才注意到或知道它们是什么。
  • 这里我也有 vs2008 的 span。无论如何,ASP.NET 的默认浏览器文件将 Menu 控件指向 Safari 浏览器的特殊适配器。不幸的是,ASP.NET 解析来自 Chrome 的 UserAgent 将其识别为 Safari。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2011-07-03
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多