ASP .NET在单个页面上的多个用户控件-回发问题

时间:2019-04-12 18:26:42

标签: asp.net vb.net user-controls updatepanel postback

我正在使用Visual Studio 2015开发针对.NET 4.0的Web应用程序(IIS)。

我有一个.aspx,其中包含4个用户控件(.ascx)。当其中一个用户控件回发主.aspx时,其他三个用户控件也回发。

我正在寻找一种防止其他用户控件在其中一个控件执行回发的方法。

我尝试将每个用户控件放在一个updatepanel(下面的代码)中。我试过在每个用户控件中放置一个updatepanel。我尝试过更改ChildrenAsTriggers和UpdateMode属性。我试图在用户控件中的项目回发时在每个用户控件中创建一个Click事件(示例仅在以下一个用户控件上)。

无论如何,页面和所有四个用户控件每次都执行一次回发。

主.ASPX:

post

Settings.ascx.vb:

__init__

编辑-添加AutoPostBack = false和UpdateMode = Conditional无效。四个用户控件在执行时仍会回发。

更新的主要.ASPX:                                                                                                   

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<%@ Register TagPrefix="uc1" TagName="Components" Src="Components.ascx" %>
<%@ Register TagPrefix="uc2" TagName="Options" Src="Options.ascx" %>
<%@ Register TagPrefix="uc3" TagName="Settings" Src="Settings.ascx" %>
<%@ Register TagPrefix="uc4" TagName="Menu" Src="Menu.ascx" %>
<form id="form1" runat="server">
        <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true"></cc1:ToolkitScriptManager>

        <asp:Panel ID="pnlComponents" runat="server">
            <asp:UpdatePanel ID="updpnlComponents" runat="server">
                <ContentTemplate>
                    <uc1:Components id="Components" runat="server"></uc1:Components>
                </ContentTemplate>
            </asp:UpdatePanel>
        </asp:Panel>

        <asp:Panel ID="pnlOptions" runat="server">
            <asp:UpdatePanel ID="updpnlOptions" runat="server">
                <ContentTemplate>
                    <uc2:Options id="Options" runat="server" CssClass="jQTrackChanges"></uc2:Options>
                </ContentTemplate>
            </asp:UpdatePanel>
        </asp:Panel>

        <asp:Panel ID="pnlSettings" runat="server">
            <asp:UpdatePanel ID="updpnlSettings" runat="server">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Settings" EventName="Click" />
                </Triggers>
                <ContentTemplate>
                    <uc3:Settings id="Settings" runat="server" CssClass="jQTrackChanges"></uc3:Settings>
                </ContentTemplate>
            </asp:UpdatePanel>
        </asp:Panel>

        <asp:Panel ID="pnlMenu" runat="server">
            <asp:UpdatePanel ID="updpnlMenu" runat="server">
                <ContentTemplate>
                    <uc4:Menu id="Menu" runat="server" CssClass="jQTrackChanges"></uc4:Menu>
                </ContentTemplate>
            </asp:UpdatePanel>
        </asp:Panel>
    </form>

2 个答案:

答案 0 :(得分:0)

请在属性窗口中使用autopostback属性。将其默认行为更改为true或false,然后重试。

答案 1 :(得分:0)

我们最终放弃并使用Javascript来替换尽可能多的回发活动,以最大程度地减少发生的回发次数。