按钮单击位于弹出窗口内的Web用户控件的事件 - Asp.net Webforms

时间:2016-03-13 08:20:40

标签: javascript c# asp.net webforms zurb-foundation

我有一个名为Login.ascx的用户控件,带有标记

 <div class="row">
        <div class="small-12 medium-6 columns">
            <p>Login Here</p>
            <label>
                Email
                        <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
            </label>
            <label>
                Password
                        <asp:TextBox ID="txtPassword" runat="server"></asp:TextBox>
            </label>
            <div style="width: 95%; margin: 10px auto">
                <asp:Button ID="btnLogin" CssClass="expand button" runat="server" Text="Log in" OnClick="BtnLogin_Click" />
            </div>
            <p>Not Registered Yet? <a href="../../Register.aspx">Register here &raquo</a></p>
        </div>
    </div>

用户控制的C#代码是

protected void BtnLogin_Click(object sender, EventArgs e)
    {
        int storeId = 1;
        using (var db = new SExpressEntities())
        {
            string password = PasswordManager.Encrypt(txtPassword.Text);
            var user =
                db.tbl_Customers.FirstOrDefault(
                    cust => cust.Email == txtEmail.Text && cust.Pwd == password && cust.StoreId == storeId);
            Response.Redirect(HttpContext.Current.Request.RawUrl, true);
        }
    }

我已将此用户控件放在我的主页Main.master

中的div上
 <div id="loginModel" class="reveal-modal" data-reveal aria-labelledby="modalTitle" aria-hidden="true" role="dialog">
        <uc1:Login runat="server" ID="Login" />
        <a class="close-reveal-modal" aria-label="Close">&#215;</a>
    </div>

这是一个基础弹出模型,当我点击按钮时会打开, 但是当我输入用户名和密码而不是点击登录按钮时,它 不开火

但是,如果我在独立页面中拖动相同的用户控件 例如Test.aspx并运行它,而按钮的Click事件工作正常。

3 个答案:

答案 0 :(得分:1)

如果这是您放在母版页和子页面上的用户控件Login.ascx,即test.aspx。你的标记说在主页面上你做了一个弹出控件。

如果你看到两个用户控件部分的渲染html,页面上的用户控件部分将出现在表单标签中,但是由于弹出窗口,主页面中的控件部分位于表单标签之外,这就是按钮点击不会触发的原因。

如何解决您的问题,此链接可能在这方面有所帮助 Foundation Modal issue with asp.net

希望它有所帮助。

答案 1 :(得分:1)

只需将以下脚本粘贴到母版页

即可
<script>
     $(document).foundation('reveal', { root_element: 'form' });  
</script>
  

这完全解决了我的问题,因为它在窗体内部创建了弹出窗口的html,确保点击甚至被解雇

答案 2 :(得分:0)

你的弹出组件如何工作?即Bootstrap popover组件使用隐藏的div来显示弹出内容。因此,当您在其上放置表单时,事件不会绑定到弹出内容,因为内容会从其他位置替换。您尝试在弹出组件上找到问题。