我有一个登录框,使用带有文本框的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"
});
答案 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 !!祝你好运。