У меня есть имя пользователя текстового поля с AutoPostBack
собственности и RequiredFieldValidator
.The проблемами, когда я что-то типа в текстовом поле, то выйти из него, таким образом, вызывая AutoPostBack
теперь, если я вернусь в текстовом поле и удалить то, что Я набрал, а затем вышел из текстового поля. Форма отображает сообщение «Имя пользователя», но его просто мигает в течение секунды, а затем страница обновляется.
Я не понимаю этого поведения. Могу ли я каким-либо образом изменить форму, чтобы либо сообщение «Имя пользователя было необходимо», либо оно вообще не мигает. И если я выхожу из текстового поля без не вводить ничего не происходит (даже не AutoPostBack
я думаю)
Другая проблема такая же, но я думаю, что мои сомнения немного отличается:
Почему RequiredFieldValidator
не уволен, если текст поле пусто и я нажимаю вкладку или что на самом деле срабатывает RequiredFieldValidator
Если RequiredFieldValidator
недействительно, почему AutoPostBack
все еще происходит, разве валидаторы не проверялись ранее в жизненном цикле страницы?
AutoPostBack и RequiredFieldValidator поведение
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
namespace Registration_LoginPortel
{
public partial class RegistrationPage : System.Web.UI.Page
{
int i = 0;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void SubmitButton_Click(object sender, EventArgs e)
{
lblLoginAvailable.Visible = false;
Response.Write("PPpostback" + (++i));
if (!CheckLogin(Usn.Text.ToString().Trim()))
{
//Register the user
try
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
con.Open(); string s = Usn.Text;
string sql_insertQuery = "INSERT INTO UserData(username,password,country)values (@UName,@UPass,@UCountry)";
//string sql_insertQuery = "INSERT into UserData(username,password,country) VALUES ('"+Usn.Text+"','"+pass.Text+"','"+country.Text+"')";
SqlCommand com = new SqlCommand(sql_insertQuery, con);
com.Parameters.AddWithValue("@UName", Usn.Text);
com.Parameters.AddWithValue("@UPass", pass.Text);
com.Parameters.AddWithValue("@UCountry", country.Text);
com.ExecuteNonQuery();
// Response.Redirect("Admin.aspx");
Response.Write("Registration is successfull");
con.Close();
}
catch (Exception ex)
{
//Response.Write("Error : " + ex.Message);
Response.Write("\n\nError : " + ex.ToString());
}
}
else
{
lblLoginAvailable.Visible = true;
lblLoginAvailable.Text = "This login already exists in our system. Chooce another login please";
}
}
protected bool CheckLogin(string login)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("select count(*) from UserData where lower(username) = lower(@login)", con);
cmd.Parameters.Add("@login", SqlDbType.VarChar).Value = login;
string id = "";
try
{
con.Open();
id = (int)cmd.ExecuteScalar() == 0 ? "" : cmd.ExecuteScalar().ToString();
}
catch (Exception ex)
{
//...
}
finally
{
con.Close();
}
if (String.IsNullOrEmpty(id)) return false;
return true;
}
protected void Usn_TextChanged(object sender, EventArgs e)
{
lblLoginAvailable.Visible = false;
}
}
}
Возможного дубликату [Stop постбэк на TextChanged] (http://stackoverflow.com/questions/1524492/stop-postback-on-textchanged) – MethodMan
@MethodMan: Edited моего вопрос –
Http: //stackoverflow.com/questions/3915994/asp-net-required-field-validator-for-at-least-one-textbox-contains-text использовать Google для примеров .. также, так как вы не публикуете свой .aspx, это будет трудно для кого-либо определить, где вы делаете свою ошибку. – MethodMan