如果,Asp按钮不回发

时间:2016-09-27 17:57:46

标签: c# asp.net button onclick

我有一个登录框,使用带有文本框的jquery,然后是一个asp:按钮,验证并进行会话,就像在代码中一样。

我已经确定当用户名和密码错误时会出现一个标签,并且您点击了asp:按钮,但由于回帖,登录框会消失。

 protected void Button1_Click(object sender, EventArgs e)
{
   Connectons etc...
    cmd.CommandText = "SELECT * FROM Users WHERE Email = @email AND password = @pass";
    cmd.Parameters.Add("@email", SqlDbType.VarChar).Value = username.Text;
    cmd.Parameters.Add("@pass", SqlDbType.VarChar).Value = password.Text;
    conn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    if (reader.Read())
    {
        Session["user_id"] = reader["user_id"];
        Session["username"] = reader["Username"];
        Session["name"] = reader["Name"];
        Session["password"] = reader["Password"];
        Session["LoggedIn"] = true;
        Session["role"] = reader["Role_id"];
        if (Convert.ToInt32(reader["Role_id"]) == 1)
        {
   Response.Redirect("Admin/default.aspx");
        }

        else
        {
            Response.Redirect("default.aspx");
        }

    }

    else
    {

        Label1.Text = "Login is wrong";

    }

    conn.Close();


}

如果登录错误,如何使按钮不回发?

        <a id="modal_trigger" href="#modal" class="btn btn-default">Log ind</a>

    <div id="modal" class="popupContainer" style="display: none;"> </div>

         $("#modal_trigger").leanModal({
        top: 100,
        overlay: 0.6,
        closeButton: ".modal_close"
    });

3 个答案:

答案 0 :(得分:1)

在按钮属性中添加AutoPostBack = False

注意:根据你的问题,目前尚不清楚你想要实现什么,但是你已经问过如何将autopostback添加到false,所以我给出了上面的答案。 如果您想要在登录不正确时阻止回发,则无法进行回发,因为只有在单击按钮后才会对用户凭据进行验证。

答案 1 :(得分:1)

需要调用回发来获取您在那里的代码。您可以使用一些ajax来查询您的数据库onClick并在成功时导致回发我相信。我没有一个例子。遗憾。

答案 2 :(得分:1)

您的问题不在回发中,而是您正在使用预定义的登录框,该登录框仅在页面未处于回发状态时呈现。从本质上讲,渲染代码假设每次登录都会成功。

要解决此问题,您需要找到创建预定义登录“框”的位置/时间/方式,并添加该行以在“登录不正确”文本后立即重新创建。

以这种方式,如果第一次尝试失败,将重新出现登录“框”。

 if (Convert.ToInt32(reader["Role_id"]) == 1)
    {
        Response.Redirect("Admin/default.aspx");
    }

    else
    {
        Response.Redirect("default.aspx");
    }

}

else
{

    reDraw = true;
}

//this has page scope (outside all methods)
bool reDraw = false;

private void reDrawLogin(){
      Label1.Text = "Login is wrong";
    //re-render login box to allow for another try
    string myScript = "\n<script type=\"text/javascript\" language=\"Javascript\" id=\"EventScriptBlock\">\n";
    myScript += "style="display: block;visibility:visible"> 
    myScript += "\n\n </script>";
 Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", myScript, false);
 }

 //in your page_load, add:

 if(isPostBack){
    if(reDraw){
       reDrawLogin();
       reDraw=false;
    }
 }

并且不要在你的CONN和COM中使用US !!祝你好运。