我遇到过一个问题,我的asp.net代码在Firefox和IE上呈现的方式不同。当我说的不同时,我的意思是,IE中的linkButton呈现为锚标签。然而,在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位于更新面板内,它响应LinkButton的OnCommand事件。代码显然编译,它在IE上运行良好。
我在firefox上检查了Page Source,它和图像一样。关于包含DIV标签的ID缺乏,有一个很好的观点。嵌入式脚本是否会导致FireFox出现问题?那个id从数字开始怎么样?
当然这是由自适应渲染引起的,其中ASP.Net发布为浏览器量身定制的html?
在您的代码示例中,asp:LinkButton标记格式不正确 - 缺少“<”。
您的模板看起来还有其他一些问题。
正如克里斯在评论中所说:“可能链接没有href吗?”
看看在Firefox中生成的html,在包含div上也没有ID - 而在IE中则有。
请记住,使用Firebug查看Firefox中的源代码,并实际查看源代码(右键单击|查看页面源代码)是两回事 - Firebug将显示源代码,由浏览器解析和处理,添加任何内容JavaScript或浏览器引擎已添加/更改 - 使用View Page Source将显示在发生任何处理之前从服务器返回的实际源 - 该代码是否正确/相同?
BrowserCaps用于在1.x世界中制作各种控件的正确混乱 - 但是它们已经更新以支持Firefox等与ASP.NET 2.0,因此它们不应该影响这里的事情。
我很尴尬地承认我已经做了最缺乏思想的错误
Jay S非常正确地指出我应该确保我正在查看正确的代码实例。本地版本上的某些链接指向Dev Server上的Dev版本。它不是最新的,并且在将产品名称转换为链接之前实际上已经运行了旧代码。
为浪费集体大脑能量而道歉并感谢大家的回复。
根据Microsof的LinkButton“在网页上显示超链接式按钮控件。”。因此,我不希望自适应渲染将其从HyperLink更改为跨度。我从未见过这种行为。
如果这确实是发生了什么,那么你可能想要检查几个thigs:
不幸的是,您的问题中没有足够的信息来自您的代码和屏幕截图,以便在此阶段为您提供明确的答案。