0

ニュースレターの購読の訪問者用のユーザーコントロールを作成しました。

UserControlはupdate-panelを使用せず、メインのマスターページに追加されます。

コントロールの問題は、サブスクライブボタンが何らかの理由で起動しないことです

ユーザーコントロールのマークアップ:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>    
    <table cellpadding="0" cellspacing="0" class="PrayerTimeWrapper">
        <tr>
            <td align="center">
                <table cellpadding="0" cellspacing="0" class="PrayerTimeInnerWrapper" border="0">
                    <tr>
                        <td valign="top">
                            <div class="dHeading"><asp:Label ID="lblTitle" runat="server" Text="JOIN US"></asp:Label></div>
                            <div class="dName">
                                <asp:TextBox ID="txtName" CssClass="txtSubscribe" runat="server" Text="NAME" onfocus="if(this.value=='NAME')this.value='';" onblur="if(this.value=='')this.value='NAME';"></asp:TextBox>
                            </div>
                            <div class="dEmail">
                                <asp:TextBox ID="txtEmail" CssClass="txtSubscribe" runat="server" Text="YOUR EMAIL" onfocus="if(this.value=='YOUR EMAIL')this.value='';" onblur="if(this.value=='')this.value='YOUR EMAIL';"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="rfvEmailSub"  runat="server" ErrorMessage="*" 
                                    ControlToValidate="txtEmail" ValidationGroup="SubEmail" ></asp:RequiredFieldValidator>
                                <asp:RegularExpressionValidator ID="revEmailSub" runat="server" 
                                    ErrorMessage="*" ControlToValidate="txtEmail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
                                    ValidationGroup="SubEmail" ></asp:RegularExpressionValidator>
                            </div>
                            <div class="dSubmit">
                                <asp:Button ID="btnSubscribe" CssClass="btnSubscribe" runat="server" Text="Subscribe" onclick="btnSubscribe_Click" />
                            </div>   
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>    
    </ContentTemplate>
</asp:UpdatePanel>

ユーザー制御コードビハインド:

protected void btnSubscribe_Click(object sender, EventArgs e)
{
    Response.Write("Test");
}

マスターページを使用しているページのマークアップ:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="PrayerTiming.aspx.cs" Inherits="PrayerTiming" %>
<%@ Register Src="~/en/UserControls/ucSubscribe.ascx" TagName="Subscribe"  TagPrefix="uc"%>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />    
    <div align="center" id="table"></div>    
    <uc:Subscribe id="ucSB" runat="server" UpdateMode="Conditional" />    
</asp:Content>

私はどこかで何か間違ったことをしていますが、何が起こっているのかわかりません。これについて助けていただければ幸いです。

4

3 に答える 3

1

Resonse.Write中に使用asynch resquestすると、更新パネル内のコントロールを適切に更新するために使用されるデータを変更できます。

Response.Write("Test")したがって、使用する代わりにLabel.Text = "Test"

于 2012-06-04T13:09:18.110 に答える
1

btnSubscribeボタンのValidationGroupも設定します

<asp:Button ID="btnSubscribe" 
      CssClass="btnSubscribe" runat="server" 
      Text="Subscribe" 
      onclick="btnSubscribe_Click" 
       ValidationGroup="SubEmail" />

アップデート

コメントや他の回答で見たところ、ボタンがコンテンツをサーバーに投稿しなかった唯一の理由は、その検証グループにサブスクライブしていなかったためです。ValidationGroupは、ページ内の特定のビュー(コントロールのグループ)を分離して、独自の検証を使用するために使用されます。たとえば、パスワードを忘れたセクションとログインセクションには2つの異なる検証グループがあるため、特定のボタンがクリックされると、そのセクションのみが検証されます。

受け入れられた答えは実際の答えよりもデバッグのアドバイスであると本当に思うので、私はこの更新を行いました。将来のSOリーダーは、問題を確認する代わりに、このガイドラインを使用するようにジャンプする可能性があります。

于 2012-06-04T12:31:00.547 に答える
0

タグを付けてUpdatePanelみてください...formrunat="server"

于 2012-06-04T12:33:28.573 に答える