RegisterStartupScript 在框架 2.0 上的 IIS 6.0 下从 UpdatePanel 触发时不起作用



我已经到处找了,但还没有找到解决方案。希望你能帮忙:

我正在维护一个用VB编写的网站。. NET,在Framework 2.0下运行。

在我的一个页面中,我在UpdatePanel中有一个下拉控件:

<asp:UpdatePanel ID="pnlDropDown" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
        <ContentTemplate>
            <asp:DropDownList ID="ddlTest" runat="server" Width="400"
                OnSelectedIndexChanged="ddlTest_SelectedIndexChanged" AutoPostBack="true">
                <asp:ListItem Text="--- Please Select ---" Selected="True"></asp:ListItem>
                <asp:ListItem Text="111"></asp:ListItem>
                <asp:ListItem Text="222"></asp:ListItem>
                <asp:ListItem Text="333"></asp:ListItem>
            </asp:DropDownList>
        </ContentTemplate>
    </asp:UpdatePanel>

在这个控件的处理程序中,我调用了ScriptManager。RegisterStartupScript:

Protected Sub ddlTest_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    ScriptManager.RegisterStartupScript(Me, GetType(Page), "Test", "alert('Test'); ", True)
End Sub    

现在我的问题是:当我从下拉菜单中选择一个值时,"RegisterStartupScript"方法将不起作用,但只有当项目在IIS 6和框架2.0下运行时才会发生。-如果我改变它在IIS 7下运行,它工作得很好。-如果我改变它在框架4.0下运行,它工作完美。-如果我删除UpdatePanel部分,它的工作。

但是如果我不改变任何东西,它就不会做任何事情。

任何解决方案之前,我改变我的整个代码与jquery和ajax工作?:)

谢谢,

Orit .

这是我发现的解决方案,以避免使用RegisterStartupScript。它很简单,效果很好:

  1. 我在UpdatePanel中添加了一个名为"hdnTest"的隐藏字段:

    <asp:UpdatePanel ID="pnlDropDown" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:HiddenField ID="hdnTest" runat="server" />
        <asp:DropDownList ID="ddlTest" runat="server" Width="400"
            OnSelectedIndexChanged="ddlTest_SelectedIndexChanged" AutoPostBack="true">
            <asp:ListItem Text="--- Please Select ---" Selected="True"></asp:ListItem>
            <asp:ListItem Text="111"></asp:ListItem>
            <asp:ListItem Text="222"></asp:ListItem>
            <asp:ListItem Text="333"></asp:ListItem>
        </asp:DropDownList>
    </ContentTemplate>
    

  2. 在服务器端,我在控件的处理程序中向隐藏字段插入一个值:

    Protected Sub ddlTest_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        If x Then
            hdnTest.Value = "true"
        Else
            hdnTest.Value = "false"
        End If
        pnlDropDown.Update()
    End Sub 
    
  3. 在客户端,我添加了一个pageLoad()函数,该函数获取隐藏字段的值并根据它进行操作:

     function pageLoad(){            
        if ($("#hdnTest").val() == "true") 
            alert('true');             
        else
            alert('false');               
     }
    

非常好。

Orit .

相关内容

  • 没有找到相关文章

最新更新