0

ページのさまざまな部分などに取り組む大規模なチームがあるため、ページのセクションの多くを再利用可能なユーザーコントロールに分割することにしました。

ただし、1 つのコントロールに問題があります。

まず、何が起こっているのかを簡単に説明します。これは、 http://www.elycity.co.uk/Business/BusinessNew2.aspx?businessid=24でも確認できます。

最初にレイアウト ページがあります: BusinessNew2.aspx

各セクションには Web コントロールがありますが、最後のセクションがあります。CompanyInformation セクションには、他のいくつかの UserControls があります。

連絡先 (businesscontact.ascx) を除いて、すべて正常に動作しています。

ボタンをクリックすると、Tabs.ascx がリセットされ、Information.ascx タブに戻ります。

ビジネス連絡先.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 内のコントロールからのすべてのポストバックによって、子 UserControls からのポストバックを含め、パネルが更新されます。

使用する場合:

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