0

因为我们将有一个庞大的团队来处理页面的各个部分等,所以我决定将页面的许多部分分解为可重用的用户控件。

但是,我对一个控件有疑问。

首先,让我让您了解正在发生的事情。您也可以在http://www.elycity.co.uk/Business/BusinessNew2.aspx?businessid=24看到这个

我们首先有布局页面:BusinessNew2.aspx

每个部分都有一个 webcontrol,但最后一个部分。CompanyInformation 部分包含其他几个用户控件。

除联系人 (businesscontact.ascx) 外,所有工作正常

单击按钮时,Tabs.ascx 被重置并返回到 Information.ascx 选项卡。

BusinessContact.ascx

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="BusinessContact.ascx.vb"     Inherits="BusinessListing.BusinessContact" %>
<asp:UpdatePanel ID="updMain" runat="server" >
<ContentTemplate>
<asp:Panel ID="pnlContactMain" runat="server" >
    <h3>Send <asp:literal ID="litCompanyName" runat="server" /> a message</h3>
    <div class="form-horizontal">
        <div class="control-group">
            <label class="control-label" for="inputName">Name</label>
            <div class="controls">
                <asp:textbox type="text" id="txtName" placeholder="Name" runat="server" />
            </div>
        </div>
        <div class="control-group">
            <label class="control-label" for="inputEmail">Email</label>
            <div class="controls">
                <asp:textbox id="txtEmail" placeholder="Email" runat="server" />
            </div>
        </div>
        <div class="control-group">
            <label class="control-label" for="inputPhone">Telephone No</label>
            <div class="controls">
                <asp:textbox id="txtPhone" placeholder="Telephone" runat="server" />
            </div>
        </div> 
        <div class="control-group">
            <label class="control-label" for="inputMessage">Message</label>
            <div class="controls">
                <asp:TextBox Height="40" TextMode="MultiLine" id="txtMessage" placeholder="Message" runat="server" />
            </div>
        </div>


        <div class="control-group">
            <label class="control-label" for="inputMessage"></label>
            <div class="controls">
                <asp:Button ID="btnSendMessage" runat="server" Text="Send Message" />
            </div>
        </div>


    </div>
    </asp:Panel>


    <asp:Panel ID="pnlContactSent" runat="server" Visible="false">
        <div class="hero-unit">
            <h2>Email has been sent</h2>
        </div>
    </asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>

就在测试时,代码隐藏:

Namespace BusinessListing
Partial Class BusinessContact
    Inherits System.Web.UI.UserControl

    Protected Sub btnSendMessage_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSendMessage.Click
        pnlContactMain.Visible = False
        pnlContactSent.Visible = True
    End Sub
 End Class
End Namespace

所以我错过了什么。为什么这会完全回发到父控制器,我该如何防止这种情况?

问候马克

4

1 回答 1

1

您尚未提供 tabs.ascx 的代码,但我猜您尚未定义哪些控件应在更新面板中触发回发。

这意味着来自 tabs.ascx 中 UpdatePanel 中控件的所有回发都会导致面板更新,包括来自子 UserControl 的回发。

如果您使用:

<asp:UpdatePanel id="upanelInfo" runat="server" ... >
    <ContentTemplate>
        ...
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="buttonXXX" EventName="Click" />
        ....
    </Triggers>
</asp:UpdatePanel>
于 2013-06-09T12:12:40.053 回答