因为我们将有一个庞大的团队工作在页面的各个部分等我决定将页面的许多部分分解为可重用的Usercontrols。
但是我遇到了一个控件的问题。
首先,让我告诉你发生了什么。您也可以在http://www.elycity.co.uk/Business/BusinessNew2.aspx?businessid=24
看到这一点我们首先拥有布局页面:BusinessNew2.aspx
每个部分都有一个webcontrol但最后一部分。 CompanyInformation Section在其中有几个其他UserControl。
除联系人(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
所以我错过了什么。为什么这样做完全回发到父控制器,我该如何防止这种情况?
此致 标记
答案 0 :(得分:1)
你没有提供tabs.ascx的代码,但我猜你没有定义哪些控件应该在更新面板中触发回发。
这意味着tabs.ascx中UpdatePanel中控件的所有回发都会导致面板更新,包括来自子UserControls的回发。
如果您使用:
<asp:UpdatePanel id="upanelInfo" runat="server" ... >
<ContentTemplate>
...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="buttonXXX" EventName="Click" />
....
</Triggers>
</asp:UpdatePanel>