Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 从内容页禁用更新面板_Asp.net_Asp.net Ajax - Fatal编程技术网

Asp.net 从内容页禁用更新面板

Asp.net 从内容页禁用更新面板,asp.net,asp.net-ajax,Asp.net,Asp.net Ajax,你好,我在母版页上有一个ToolkitScriptManager和更新面板。我想在内容页面上禁用更新面板功能,但在其他页面上应该可以正常工作 Master Page Code: <ajax:ToolkitScriptManager runat="server" ID="sm1" EnableScriptGlobalization="true" EnableScriptLocalization="true" ScriptMode="Release" CompositeScript-

你好,我在母版页上有一个ToolkitScriptManager和更新面板。我想在内容页面上禁用更新面板功能,但在其他页面上应该可以正常工作

Master Page Code:
<ajax:ToolkitScriptManager runat="server" ID="sm1" EnableScriptGlobalization="true"
    EnableScriptLocalization="true" ScriptMode="Release" CompositeScript-  
ScriptMode="Release" />
<asp:UpdatePanel ID="udpEmail" runat="server">
<ContentTemplate>
<asp:ContentPlaceHolder ID="cphMain" runat="server">
</asp:ContentPlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>

Content Page Code:(e.g. Page1.aspx)
<asp:Content ID="Content3" ContentPlaceHolderID="cphMain" runat="Server">
Code Here
</asp:Content>

所以现在我想说的是,更新面板功能不应该在Page1.aspx上工作,但应该在同一母版页的其他内容页上工作。请帮助

检查页面名称并将cphMain的可见性设置为false后的代码如何


你探索过Razor+MVC了吗?

在应该禁用它的页面上,尝试以下方法:

UpdatePanel panel = Page.Form.FindControl("UpdatePanel1") as UpdatePanel;
if (panel != null)
{
    panel.Enabled = false;
}
private void DisableControl(Control parentCtrl, string controlID)
{
    foreach (Control ctrl in parentCtrl.Controls)
    {
        if (ctrl.ID == controlID)
        {
            ((WebControl)ctrl).Enabled = false;
            continue;
        }
        DisableControl(ctrl, controlID);
    }
}
根据UpdatePanel在母版页中的位置,您可能需要递归搜索该页,如下所示:

UpdatePanel panel = Page.Form.FindControl("UpdatePanel1") as UpdatePanel;
if (panel != null)
{
    panel.Enabled = false;
}
private void DisableControl(Control parentCtrl, string controlID)
{
    foreach (Control ctrl in parentCtrl.Controls)
    {
        if (ctrl.ID == controlID)
        {
            ((WebControl)ctrl).Enabled = false;
            continue;
        }
        DisableControl(ctrl, controlID);
    }
}

您可以在内容页上强制转换母版属性以更正母版页类型,也可以使用

<%@ MasterType %>
打印母版页。
然后您将可以访问其上的控件,并可以禁用更新面板。

我还没有找到比下面更好的方法来覆盖onInit并添加该代码

protected override void OnInit(EventArgs e)
    {
        //disables the ajax effect, and allows postback
       ScriptManager.GetCurrent(Page).EnablePartialRendering = false;


        base.OnInit(e);
    }

将更新面板移动到您希望使用它的页面中,然后将其从母版页中删除。或者为第1页创建第二个占位符,该占位符位于updatepanel之外。非常感谢这对我有用。你探索过Razor+MVC吗?--没有