【问题标题】:how to stop data from adding into the database even when the textboxes are empty in asp?即使asp中的文本框为空,如何阻止数据添加到数据库中?
【发布时间】:2013-05-09 02:10:11
【问题描述】:

我正在尝试验证三个文本框,它们都只是文本字段。它们都通过 sqlserver 连接到数据库。

现在我想知道当表单仍然为空时如何阻止表单将空记录添加到我的数据库中。我有一些 Javascript 验证,它告诉用户该字段为空,但是在您单击消息框的确定后,页面刷新并添加了一条空记录。

如果有人可以帮助我编写一些代码,那就太好了。

我的 javascript 看起来像这样:

    function myAddFunction() {
        var a = document.forms["form1"]["txtFirstName"].value;
        var b = document.forms["form1"]["txtLastName"].value;
        var c = document.forms["form1"]["txtvercode"].value;
        if (a == null || a == "") {
            alert("Please Enter a value");
            return false;
        }
        if (b == null || b == "") {
            alert("Please Enter a value");
            return false;
        }
        if (c == null || c == "") {
            alert("Please Enter a value");
            return false;
        }
        else {
            alert("The Member has been added!");
            return true;
        }
    }

我的 Default.aspx.cs 文件如下所示:

protected void btnAdd_Click(object sender, EventArgs e)
{

    SqlConnection conn = new SqlConnection(
    @"Data Source=(LocalDB)\v11.0; AttachDbFilename='|DataDirectory|\employees.mdf';
    Integrated Security=True");

    conn.Open();

    SqlCommand cmd = new SqlCommand("INSERT INTO membership (FirstName, LastName, MembershipClass, VerificationCode) VALUES ('" + txtFirstName.Text + "', '" + txtLastName.Text + "', '" + dropmemberclass.Text + "', '" + txtvercode.Text + "')", conn);

    cmd.ExecuteNonQuery();

    txtFirstName.Text = "";
    txtLastName.Text = "";
    txtvercode.Text = "";
    txtMemID.Text = "";
    txtmemdelete.Text = "";
    lblMemID.Text = "";
    lblMemIDSearch.Text = "";
}

【问题讨论】:

    标签: c# javascript asp.net database validation


    【解决方案1】:

    您可以为每个TextBox 添加一个RequiredFieldValidator

    <asp:RequiredFieldValidator id="RequiredFieldValidator2"
                     ControlToValidate="txtFirstName"
                     Text="First name is a required field"
                     ForeColor="red" 
                     runat=server>
    

    这会验证客户端和服务器端的数据,因此您不需要任何 Javascript 代码。

    【讨论】:

    • 嗨,nmat,我也试过了。但这不是我正在寻找的确切内容。还是谢谢你
    【解决方案2】:

    将代码替换为:

    SqlConnection conn = new SqlConnection(
        if(txtFirstName.Text != "" && txtLastName.Text != "" && txtvercode.Text = "")//And so on...
        {
            @"Data Source=(LocalDB)\v11.0; AttachDbFilename='|DataDirectory|\employees.mdf';
            Integrated Security=True");
    
            conn.Open();
    
            SqlCommand cmd = new SqlCommand("INSERT INTO membership (FirstName, LastName, MembershipClass, VerificationCode) VALUES ('" + txtFirstName.Text + "', '" + txtLastName.Text + "', '" + dropmemberclass.Text + "', '" + txtvercode.Text + "')", conn);
    
            cmd.ExecuteNonQuery();
    
            txtFirstName.Text = "";
            txtLastName.Text = "";
            txtvercode.Text = "";
            txtMemID.Text = "";
            txtmemdelete.Text = "";
            lblMemID.Text = "";
            lblMemIDSearch.Text = "";
        }
    }
    

    在我添加的条件中添加更多...

    【讨论】:

    • 嗨 Nirock,我现在可以使用它了,我所要做的就是将 if 语句放在外面,然后将其余的 SqlConnection 位嵌套在 if 语句中,它就像一个魅力!跨度>
    【解决方案3】:

    您可以将任何键(如主键)添加到列中,这样它就不会接受空值并将 requiredfieldvalidator 添加到您的文本框

    【讨论】:

      【解决方案4】:

      检查一下

      <asp:CustomValidator ID="myCustValidator" runat="server" ControlToValidate="txtFirstName"  OnServerValidate="ServerFirstNameValid"></asp:CustomValidator>
      
      protected void ServerFirstNameValid(object source, ServerValidateEventArgs args)
      {
         args.IsValid = !String.IsNullOrEmpty(txtFirstName.Text.Trim());
         if (!args.IsValid)
               myCustValidator.ErrorMessage="First Name should not be Empty";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 2013-02-03
        • 2018-04-17
        相关资源
        最近更新 更多