Asp.Net,DropDownList,AutoPostBack和Google Chrome

前端之家收集整理的这篇文章主要介绍了Asp.Net,DropDownList,AutoPostBack和Google Chrome前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的asp.net页面(框架3.5)和一个UpdatePanel与一系列的下拉列表我想要异步填充.所有主流浏览器(Opera,Safari,IE6,IE7,FF3)都可以正常工作,但不能在Chrome中运行.

Chrome似乎忽略了必须提出异步请求的SelectedIndexChanged事件.

任何人都知道一个简单的解决方法吗?
谢谢!

编辑:更多信息

正如我对Adam Lassek所说,updatepanel在点击之后刷新一个asp:Button,但它不适用于下拉列表的SelectedIndexChanged事件.

updatepanel设置为:

<asp:UpdatePanel ID="updPanel" runat="server" UpdateMode="Always" ChildrenAsTriggers="true">

没有指定触发器,并且dropdows具有AutoPostBack =“true”

(更新)(并重新引用)

经过几次尝试后,我发现这不是UpdatePanel的问题,但是似乎下拉列表的AutoPostback无法正常工作,即使在没有ScriptManager和UpdatePanel的页面中也是如此.
我相信这只是一个问题,只有这个项目,因为如果我从头开始一个新的网站,并复制这个结构,在Chrome中工作正常…
我正在尝试逐步删除原始项目中的所有其他事情,以确定是什么问题.

如果有人有一些想法在…

解决方法

有一个与Ajax.NET和Chrome& Safari 3.

小而快速的测试可能是欺骗性的,因为它似乎可以像现有的Ajax.NET库一样正常工作.这是因为它会执行第一个Ajax请求,并在该结束时失败,因此只有当您尝试执行第二个Ajax操作时,您会注意到它已失败.如果您在页面上放置了一个UpdateProgress控件,您会注意到,在第一个请求之后,您的UpdateProgress控件将不会消失.

幸运的是,有一个答案!

最近有一个很好的帖子详细说明了你可以在这里找到该做什么:

http://blog.turlov.com/2009/01/aspnet-ajax-compatibility-patch-for.html

它的一般要点是,Chrome和Safari 3都将自己的WebKit报告在用户代理字符串中.

您需要添加一些javascript来帮助Ajax.NET框架识别基于WebKit的浏览器,如下所示:

if (typeof(Sys.Browser.WebKit) == "undefined") {
    Sys.Browser.WebKit = {};
}

if (navigator.userAgent.indexOf("WebKit/") > -1 ) {
    Sys.Browser.agent = Sys.Browser.WebKit;
    Sys.Browser.version = 
        parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
    Sys.Browser.name = "WebKit";
}

您需要将其添加到JavaScript文件中,并在ScriptManager中引用它:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/assets/javascript/WebKit.js" />
    </Scripts>
</asp:ScriptManager>

请注意,您可以将WebKit.js保留在程序集中,并通过使用类似于以下的ScriptReference标签进行引用:

<asp:ScriptReference Assembly="Scripts" Name="Scripts.webkit.js" />

一旦你完成了所有这一切,如果可能的话,停止使用WebForms和Ajax.NET并使用MVC和jQuery 原文链接:https://www.f2er.com/aspnet/249617.html

猜你在找的asp.Net相关文章