1

我遇到了一个问题,我的 asp.net 代码在 Firefox 和 IE 上呈现不同。当我说不同时,我的意思是,IE 中的链接按钮呈现为锚标记。然而,在 Firefox 上,它呈现为一个跨度

代码示例

<ItemTemplate>
   <div id="<%#Eval("Id","{0}") %>">
     <asp:LinkButton ID="ProductName" runat="server" CommandName="Listing" 
       CommandArgument='<%# Bind("Id") %>' Text='<%# Bind("Name") %>PostBackUrl=""></asp:LinkButton>
     <asp:Label ID="lbl_pricePerUnit" runat="server" Text="" />
   </div>
</ItemTemplate>

其他一些控件虽然可见,但根本不呈现。替代文字 替代文字

我不知道这里发生了什么,我以前从未见过这种情况。我正在使用最新版本的浏览器,并且我有 asp.net 3.5 和 VS2008

更新:好的,这是一个 AJAX 页面,gridview 位于更新面板内,该面板对 LinkBut​​ton 的 OnCommand 事件作出反应。该代码显然可以编译,并且在 IE 上运行良好。

我已经在 Firefox 上检查了页面源,它​​与图像相同。关于包含的 DIV 标签上缺少 ID 的观点很好。嵌入式脚本是否会导致 FireFox 出现问题?id 以数字开头呢?

4

5 回答 5

1

这肯定是由自适应渲染引起的,ASP.Net 发出为浏览器量身定制的 html?

http://aspnetresources.com/blog/adaptive_rendering.aspx

于 2009-01-27T13:12:12.550 回答
1

在您的代码示例中,asp:LinkBut​​ton 标记的格式不正确 - 缺少“<”。

于 2009-01-27T13:22:28.767 回答
1

您的模板似乎还有其他一些问题。

正如克里斯在评论中所说的“如果链接没有href?”

查看在 Firefox 中生成的 html,包含的 div 上也没有 ID - 而在 IE 中有。

请记住,使用 Firebug 在 Firefox 中查看源代码和实际查看源代码(右键单击|查看页面源代码)是两件不同的事情 - Firebug 将显示由浏览器解析和处理的源代码,以及任何添加JavaScript 或浏览器引擎已添加/更改 - 使用查看页面源将向您显示在任何处理发生之前从服务器返回的实际源 - 该代码是否正确/相同?

BrowserCaps 曾经在 1.x 世界中将各种控件弄得一团糟——但是它们已更新为使用 ASP.NET 2.0 支持 Firefox 等,因此它们不应该影响这里的东西。

于 2009-01-27T13:52:29.987 回答
1

我很不好意思承认我犯了最心不在焉的错误

Jay S非常正确地指出,我应该确保我正在查看正确的代码实例。本地版本上的一些链接指向 Dev Server 上的 Dev 版本。它不是最新的,实际上在产品名称转换为链接之前运行的旧代码。

为浪费集体脑力而道歉,并感谢大家的回复。

于 2009-01-27T14:44:44.843 回答
0

根据 Microsof 的 LinkBut​​ton“在网页上显示超链接样式的按钮控件。”。因此,我不希望自适应渲染将其从超链接更改为跨度。我从未见过这种行为。

如果这确实是正在发生的事情,那么您可能需要检查几个问题:

  1. 页面发布后是否有任何 DHTML 或 JS 加载会更改 HTML?
  2. 是否安装了任何程序集/服务器控件来覆盖链接按钮的默认行为?
  3. 尝试使用绑定链接按钮进行空白独奏并尝试重现,然后通过向项目添加组件和控件来回溯以确定导致问题的原因。

不幸的是,您的代码和屏幕截图中没有足够的信息在这个阶段给您一个明确的答案。

于 2009-01-27T13:35:44.810 回答