简体   繁体   中英

Required field validator allows empty textbox to be submitted

I have a required field validator for two textboxes for a submission form. My code for the form is below. For some odd reason it doesn't validate and allows the empty string to be entered into the database. The fields that are being entered are char but it doesn't submit it as null, just blank.

Front-end

    <td style="width: 315px; height: 22px;border-right: solid 1px #a32020;">
                    <asp:TextBox ID="txtCompanyName" runat="server" BorderColor="#A32020" style ="border-right: solid 1px #a32020;" OnTextChanged="txtCompanyName_TextChanged" CausesValidation="True"></asp:TextBox>
                &nbsp;<asp:RequiredFieldValidator ID="rfvCoName" runat="server" ControlToValidate="txtCompanyName" Display="Dynamic" ErrorMessage="Please do not leave the Company Name blank." ValidationGroup="vgCompanyCreate"></asp:RequiredFieldValidator>
                </td>

c#

    protected void btnSubmitCompany_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            // Creating a new connection to the database. 
            -- Insert Connection String --

            // Creating a new command to insert the input values into the database.
            SqlCommand SubmitCompanyCmd = new SqlCommand("Insert into Employer ([EmployerID], [Name], [Status], [Remarks], [DateLastModified], [LastModifiedBy]) Values(@inputCoID, @inputCoName, @inputCoStatus, @inputCoRemarks, @currentDateTime, 'Admin')", conn);

            SubmitCompanyCmd.Parameters.AddWithValue("@inputCoID", txtCompanyID.Text);
            SubmitCompanyCmd.Parameters.AddWithValue("@inputCoName", txtCompanyName.Text);
            SubmitCompanyCmd.Parameters.AddWithValue("@inputCoStatus", ddlCompanyStatus.Text);
            SubmitCompanyCmd.Parameters.AddWithValue("@inputCoRemarks", txtCompanyRemarks.Text);
            SubmitCompanyCmd.Parameters.AddWithValue("@currentDateTime", DateTime.Now);

            conn.Open();
            SubmitCompanyCmd.ExecuteNonQuery();
            conn.Close();
            lblSuccessMsg.Text = "Yay. xqc";
        }

edit: Ignore the "Insert connection string" part, the actual connection string works just fine as tested with other functions.

I managed to find the solution.

Basically what I found out is that all relevant fields need the validation group as well. Not just the validators.

The best way is to add code to your code behind (.cs class)

 protected void btnSubmitCompany_Click(object sender, EventArgs e)
    {
txtCompanyName.BorderColor = System.Drawing.Color.White;

if (txtCompanyName.Text="")
{
txtCompanyName.BorderColor = System.Drawing.Color.Red;
//Add error message if you want
}
else
{
if (Page.IsValid)
        {
            // Creating a new connection to the database. 
            -- Insert Connection String --

            // Creating a new command to insert the input values into the database.
            SqlCommand SubmitCompanyCmd = new SqlCommand("Insert into Employer ([EmployerID], [Name], [Status], [Remarks], [DateLastModified], [LastModifiedBy]) Values(@inputCoID, @inputCoName, @inputCoStatus, @inputCoRemarks, @currentDateTime, 'Admin')", conn);

            SubmitCompanyCmd.Parameters.AddWithValue("@inputCoID", txtCompanyID.Text);
            SubmitCompanyCmd.Parameters.AddWithValue("@inputCoName", txtCompanyName.Text);
            SubmitCompanyCmd.Parameters.AddWithValue("@inputCoStatus", ddlCompanyStatus.Text);
            SubmitCompanyCmd.Parameters.AddWithValue("@inputCoRemarks", txtCompanyRemarks.Text);
            SubmitCompanyCmd.Parameters.AddWithValue("@currentDateTime", DateTime.Now);

            conn.Open();
            SubmitCompanyCmd.ExecuteNonQuery();
            conn.Close();
            lblSuccessMsg.Text = "Yay. xqc";
}
}

Or you could use the bootstrap "required" attribute which is very basic.

<asp:TextBox ID="txtCompanyName" runat="server" BorderColor="#A32020" style ="border-right: solid 1px #a32020;" OnTextChanged="txtCompanyName_TextChanged"  requrired="true"></asp:TextBox>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM