簡體   English   中英

asp.net RequiredFieldValidator

[英]asp.net RequiredFieldValidator

我有個問題。 我有一個注冊和一些RequiredFieldValidator控件。

問題:

如果我將文本框留空,則可以看到錯誤消息。 但是它將值寫入我的數據庫中。 我希望它停止,而不要在我的數據庫中寫入值。

非常感謝你!

凱文

ASPX

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM