如何从用户控件添加对母版页脚本管理器的引用?

时间:2011-10-11 15:41:55

标签: asp.net ajax pagemethods webusercontrol

我有一个ScriptManager,它被添加到我的MasterPage;

 <telerik:RadScriptManager ID="RadScriptManager1" runat="server" EnablePageMethods="true" />

我有一个Web用户控件放在母版页上。

在Web用户控件中,我想使用PageMethods,但它抱怨没有定义PageMethods。

 function ddlSqlConnections_SelectedIndexChange(selectedValue) {

        PageMethods.OnSelectedIndexChanged(selectedValue);
        location.reload(true);
    }

我向用户控件添加了一个新的ScriptManager,它抱怨一个页面上只能存在一个scriptmanager,所以

基本上如何从用户控件添加对母版页脚本管理器的引用?

似乎不可能?

谢谢,

3 个答案:

答案 0 :(得分:0)

使用常规ScriptManager代替RadScriptManager

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />

答案 1 :(得分:0)

我的结论是,使用Web用户控制页面方法无法实现,而是将AJAX用于Web服务:

$('.ddlSqlConnections').change(function (control) {

            var selectedValue = control.currentTarget.value;            
            if (selectedValue == 0) {
                return;
            }

            $.ajax({
                type: "POST",
                url: "AdminService.asmx/AdminConnectionsOnSelectedIndexChanged",
                data: "{uniqueName: " + selectedValue + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {                                        
                    location.reload(true);
                },
                error: function (msg) {
                    alert('failed to send a web service request; please contact the administrator.')                    
                }
            });
        });

答案 2 :(得分:0)

您可以尝试从用户控件中调用母版页中的方法。

 Page.GetType().InvokeMember("MethodName", BindingFlags.InvokeMethod, null, this.Page, new object[] { });