0

我为访问者创建了一个用户控件来订阅时事通讯。

UserControl 带有更新面板并被添加到主母版页。

控件的问题是订阅按钮由于某种原因没有触发

用户控件标记:

<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 用于分隔页面中的某些视图(控件组),以便它们使用自己的验证。例如,忘记密码部分和登录部分将有两个不同的验证组,因此当单击某个按钮时,仅验证其部分。

我做了这个更新,因为我真的认为接受的答案更像是一个调试建议而不是一个实际的答案。未来的 SO 读者可能会跳到使用此指南而不是看到问题。

于 2012-06-04T12:31:00.547 回答
0

尝试使用... UpdatePanel_formrunat="server"

于 2012-06-04T12:33:28.573 回答