【问题标题】:Onclick of a button run code behind and do not postback the page(refresh) asp.netOnclick 一个按钮在后面运行代码并且不回发页面(刷新)asp.net
【发布时间】:2012-09-08 14:21:31
【问题描述】:

我在登录时遇到了下拉菜单问题。当我按下登录链接时,下拉菜单会向下滑动。我想要的是当 wrong credentials 提供给 do not postback(refresh) 时,下拉菜单将保持打开状态,让用户输入正确的密码! p>

我试过 OnClientClick="return false;"但这会禁用我的 asp:button 的 onclick 事件。

我的代码:

string insCmd = "SELECT ID_USER FROM users WHERE username = @LoginEmail AND password = @passwd;";
        SqlCommand Login = new SqlCommand(insCmd, con);

        Login.Parameters.AddWithValue("@LoginEmail", txtLoginEmail.Text);
        Login.Parameters.AddWithValue("@passwd", txtLoginPassword.Text);

        try
        {
            SqlDataReader dr = Login.ExecuteReader();
            SqlDataReader dr2;

            if (dr == null || !dr.HasRows)
            {
                litErrorLogin.Text = "<span>Error:Wrong Credentials</span>";

                //btnLogin.OnClientClick = "return false;";
                return;
            }

            while (dr.Read())
            {
                Session["UserID"] = dr.GetInt32(0);
            }

我的html代码:

<div id="bb_loginForm">
    <div class="bg_loginForm">
        <span style="font-size:11.5px;font-weight:bold">Log in to Account</span> <a class="bb_linkLoginHeaderHide" href="#" title="Hide">
            Hide</a>
        <br />
        <div class="f_username">
            <label for="txtLoginEmail" id="labelUser">
                Email
            </label>
            <br />
            <asp:TextBox class="text-input" ID="txtLoginEmail" runat="server" Height="15px" Width="130px"></asp:TextBox>
        </div>

        <div class="f_password">
            <label for="txtLoginPassoword" id="labelPassword">
                Password
            </label>
            <br />
            <asp:TextBox class="text-input" ID="txtLoginPassword" runat="server" Height="15px" Width="130px" 
                TextMode="Password"></asp:TextBox>
        </div>
        <br />
        <div class="f_login">

            <!--src="../images/GreyButton.png"   class="submit btn primary-btn" onclick="btnLogin_Click"-->
            <asp:Button class="submit google-button" ID="btnLogin" onclick="btnLogin_Click" runat="server" Text="Log in" />                                       


            <br />

            <asp:CheckBox ID="chkRememberLogin" runat="server" />
            &nbsp;
            <label class="smaller" for="chkRememberLogin" id="labelrememberusername">Remember me
            </label>
            <br />
            <a title="Forgot your login info?" href="#" class="underlineHover">Forgot your login
                info? </a>
            <br />
            <asp:Literal ID="litErrorLogin" runat="server"></asp:Literal>
        </div>
    </div>
</div>

【问题讨论】:

  • 你是用来验证用户的吗?
  • 是的,如果用户提供的凭据正确,我有一个查询要检查我的数据库。
  • 请添加有助于解决问题的代码和 html。
  • 你还需要添加jquery ajax代码。

标签: javascript asp.net


【解决方案1】:

您基于Ajax 开发,以便不发布您的所有页面,但您只发布您的页面的一部分。 (更新部分页面)

        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger controlid="btnLogin" eventname="Click" />
        </Triggers>
            <ContentTemplate>
                <asp:Literal ID="litErrorLogin" runat="server"></asp:Literal>   
                <asp:Button class="submit google-button" ID="btnLogin" onclick="btnLogin_Click" runat="server" Text="Log in" />                                       

            </ContentTemplate>
        </asp:UpdatePanel>

你设置了所有你不想在ContentTemplate之外发布的控件

注意:我修复了 updatemode="Conditional"&lt;asp:AsyncPostBackTrigger controlid="btnLogin" eventname="Click" /&gt;

【讨论】:

  • 它可以工作,但它没有向我显示消息:错误,凭据错误。我是否也必须将文字放入 AJAX 中?我不知道这些东西是如何工作的,从来没有使用过 AJAX。
  • 当我运行我的程序时显示我执行了代码: litErrorLogin.Text = "Error:Wrong Credentials";但它没有显示在框中(就像我在问题中的图片)。
【解决方案2】:

@Andreas Lympouras

把这段代码写在标签里

function show() {`enter code here`
            var Errormsg = document.getElementById("Error");
            Errormsg.style.color = "red";
            Errormsg.innerHTML = "incorrect login";
        }

在后面的代码中复制这段代码

 string script = string.Format(@"show()");

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page), UniqueID, script, true);

现在它将调用客户端并向您显示消息。

【讨论】:

    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2010-10-07
    • 2010-11-14
    • 2014-10-21
    相关资源
    最近更新 更多