我们有一个使用 VB.Net 的 ASP.net 3.5 WebForms 应用程序,它已经运行了很多年。在这个应用程序中有一个 gridview 选择按钮,它不会为某些客户端回发。当我们将 Web 应用程序从 Windows Server 2003 移至 Windows Server 2008R2 上的 IIS 7 时,我们的某些客户端开始出现此问题。
选择按钮在 gridview 中定义asp:CommandField ShowSelectButton="True"
,生成代码如下(从 HTML 源代码复制):
a href="javascript:__doPostBack('ctl00$bodyContentPlaceHolder$GridView1','Select$0')" style="color:#333333;">Select</a>
对于一些使用IE(各种版本)的Win XP、Win 7用户,用户点击生成的按钮时不会回发。已检查所有用户以确保启用了 javascript。对于其他使用IE等浏览器的Win XP、Win 7用户来说,效果很好。很多谷歌搜索已经找到了关于 Javascript 回发问题的信息,但似乎没有什么合适的。
其他信息:在 GridView Rowdatabound 事件中使用此代码为回发启用了整个 gridview 行:
e.Row.Attributes.Add("onClick", "javascript:__doPostBack('" + Replace(GridView1.ClientID, "_", "$") + "','Select$" + e.Row.RowIndex.ToString + "')")
生成此 HTML:
<tr align="center" valign="top" onClick="javascript:__doPostBack('ctl00$bodyContentPlaceHolder$GridView1','Select$0')"
请注意,Javascript 与不起作用的 javascript 读取相同,除了单击行中的其他位置对所有用户都有效。这给我带来了三个可能的问题:
- SELECT 按钮是否存在于链接标签中,导致某些用户无法使用?
- 是否存在可能不同的用户设置?
- 互联网提供商是否阻止了它?