[英]asp.net RequiredFieldValidator
我有個問題。 我有一個注冊和一些RequiredFieldValidator控件。
問題:
如果我將文本框留空,則可以看到錯誤消息。 但是它將值寫入我的數據庫中。 我希望它停止,而不要在我的數據庫中寫入值。
非常感謝你!
凱文
<tr>
<td id="LabelBenutzername" class="auto-style2">Benutzername</td>
<td>
<asp:TextBox ID="TextBoxRBenutzername" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server" ControlToValidate="TextBoxRBenutzername"
ErrorMessage="Bitte einen Benutzernamen eingeben" ForeColor="Red">
</asp:RequiredFieldValidator>
</td>
</tr>
if (IsPostBack)
{
SqlCommand cmd = new SqlCommand("select * from tabUser where Benutzername = @Benutzername", con);
SqlParameter param = new SqlParameter();
param.ParameterName = "@Benutzername";
param.Value = TextBoxRBenutzername.Text;
cmd.Parameters.Add(param);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
Label1.Text = "User Id already exists";
con.Close();
return;
}
con.Close();
}
try
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBFitnessBlogConnectionString"].ToString());
SqlCommand cmd = new SqlCommand();
cmd.Connection = con; //assigning connection to command
cmd.CommandType = CommandType.Text; //representing type of command
//cmd.CommandText = "INSERT INTO UserDetails (Fname,Lname,Email,Password,Gender,Dob,Mobile,Address) values
// (@Fname,@Lname,@Email,@Password,@Gender,@Dob,@Mobile,@Address)";
cmd.CommandText = "INSERT INTO tabUser values(@Benutzername,@Passwort,@Vorname,@Nachname,@Email)";
//adding parameters with value
cmd.Parameters.AddWithValue("@Benutzername", TextBoxRBenutzername.Text.ToString());
cmd.Parameters.AddWithValue("@Passwort", TextBoxRPasswort.Text.ToString());
cmd.Parameters.AddWithValue("@Vorname", TextBoxRVorname.Text.ToString());
cmd.Parameters.AddWithValue("@Nachname", TextBoxRNachname.Text.ToString());
cmd.Parameters.AddWithValue("@Email", TextBoxREmail.Text.ToString());
con.Open(); //opening connection
cmd.ExecuteNonQuery(); //executing query
con.Close(); //closing connection
Label1.Text = "Registration erfolgreich..";
}
catch (Exception ex)
{
Label1.Text = "Registration erfolgreich NICHT..";
}
}
在您的隱藏代碼中,將數據庫邏輯包裝起來以檢查頁面是否有效,如下所示:
if(Page.IsValid)
{
// Do database logic here
}
快速解答:在您的代碼隱藏文件中,在繼續進行數據庫更新之前,將事件寫入事件以檢查驗證。
protected void btnUpdateSettings_Click(object sender, EventArgs e)
{
if (IsValid)
{
// Event Programming Code Goes Here
}
}
這樣的想法是,如果任何控件觸發了驗證控件,則該表單可以回發,但是將不會執行任何代碼。
在調用數據庫以更新數據之前,請檢查
Page.IsValid == true
在進行更新之前。
如果您的驗證失敗, 則應為false。
我看不到您的提交按鈕。 但是我已經使用您的代碼向您展示了我的工作方式。 看起來您在兩個控件中都缺少ValidationGroup。
<tr>
<td id="LabelBenutzername" class="auto-style2">Benutzername</td>
<td>
<asp:TextBox ID="TextBoxRBenutzername" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBoxRBenutzername" ValidationGroup="Insert" ErrorMessage="Bitte einen Benutzernamen eingeben" ForeColor="Red"></asp:RequiredFieldValidator>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" Font-Size="Smaller" Height="29px" OnClick="btnSubmit_Click" Width="59px" ValidationGroup="Insert" CausesValidation="true" />
</td>
</tr>
我希望這有幫助。
請注意,您也可以使用驗證摘要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.