我能够检查用户名已经存在使用这样的代码:显示错误消息(asp.net)
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Job_Registration_ConnectionString"].ConnectionString);
try
{
conn.Open();
String checkUsr_query = "SELECT count(*) from Job_UserData where username = @Usn";
SqlCommand comm = new SqlCommand(checkUsr_query, conn);
comm.Parameters.AddWithValue("@Usn", TextBox_Usn.Text);
if (!comm.ExecuteScalar().ToString().Equals("0"))
{
Label_Usn.Visible = true;
}
else
{
Label_Usn.Visible = false;
}
}
catch (Exception check_usr)
{
Response.Write(check_usr.ToString());
}
finally
{
if (conn != null)
conn.Close();
}
}
其他变化不请使用单独的标签,而不是改变RequiredFieldValidator
中的文字,或者我可以将其与CustomValidator
一起使用并更改其可见性。
我想要做的就是检查,如果文本框为空当按钮被按下这是由RequiredFieldValidator
照顾,一旦我离开的用户名文本框应该检查并显示用户名是否可用与否和提交提交点击应该不允许用户注册。
目前我使用此代码:
protected void Button_RegForm_Submit_Click(object sender, EventArgs e)
{
/* if (Label_Usn.Visible)
{
return;
}
* */
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Job_Registration_ConnectionString"].ConnectionString);
try
{
String insert_query = "INSERT into Job_UserData VALUES (@Usn,@Pass,@Village,@Contact,@Address,@Occupation)";
conn.Open();
SqlCommand comm = new SqlCommand(insert_query, conn);
comm.Parameters.AddWithValue("@Usn", TextBox_Usn.Text);
comm.Parameters.AddWithValue("@Pass", TextBox_Pass.Text);
comm.Parameters.AddWithValue("@Village", TextBox_Village.Text);
comm.Parameters.AddWithValue("@Contact", TextBox_Contact.Text);
comm.Parameters.AddWithValue("@Address", TextBox_Address.Text);
comm.Parameters.AddWithValue("@Occupation", TextBox_Occupation.Text);
comm.ExecuteNonQuery();
}
catch (Exception insertError)
{
Response.Write(insertError.ToString());
}
finally
{
if (conn != null)
conn.Close();
}
}
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Job_Registration_ConnectionString"].ConnectionString);
try
{
conn.Open();
String checkUsr_query = "SELECT count(*) from Job_UserData where username = @Usn";
SqlCommand comm = new SqlCommand(checkUsr_query, conn);
comm.Parameters.AddWithValue("@Usn", TextBox_Usn.Text);
if (!comm.ExecuteScalar().ToString().Equals("0"))
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
}
catch (Exception check_usr)
{
Response.Write(check_usr.ToString());
}
finally
{
if (conn != null)
conn.Close();
}
}
而且我必须用AutoPostBack
为用户名的文本框,以确保重复的用户名,只要我走出了用户名文本框的检查。我发布的代码没有AutoPostBack
,但它允许用户注册,即使显示该用户名不可用,并且不检查重复的用户名,而不点击提交按钮。
当我使用AutoPostBack
财产它创造的问题与RequiredFieldValidator
财产,犹如该字段为空的页面刷新由于PostBack
后,我离开的用户名文本框和第二的“需要用户名”消息闪烁,然后消失我不想要。 我试着将Page_Load
方法中的用户名检查部分和RequiredFieldValidator
使用的文本更改属性,但有时会显示错误的信息。
我该如何做到这一点,或者是否使用Page_load
方法完成,但我做错了吗?有没有更好的方法来做到这一点?
我希望这种形式的工作方式是我相信其他在线形式的工作,如果他们以不同的方式工作,请分享该方法。
作为一个方面的问题,你真的将查询发送到服务器的客户端验证时,每一次?我会检查用户名是否仅在提交时存在。 –
我认为通常这些表格告诉你,只要你输入它并更改文本框 –
@abhishekjaiswal,就可以使用用户名,因为他需要启用cookie。,我是对的吗? – goofyui