如何在ASP.NET中验证用户输入?

时间:2016-05-14 10:13:43

标签: c# asp.net visual-studio validation user-input

我正在使用visual studio 4.6.01038,我在ASP.NET中很新。我有一个非常简单的注册页面,用户输入他的姓名,街道和电话号码。我想控制输入框中的输入,以便用户必须以某种方式编写它。

1)名称/用户名字段不得为空,且不得包含数字

2)街道名称应以字母开头,然后它应该是一个空格,那么它应该是一个数字,例如街12号

3)电话号码必须只包含数字

如果用户选择这些格式以外的其他格式,则会要求他再次输入。 现在,所有人都说,我正在寻找一种更简单的方法。 [可能来自该特定文本字段的属性选项卡?] 或者如果我以编程方式进行,我应该在哪里进行以及如何进行?

以下是我正在处理的代码:

Register.aspx:

    <form id="form1" runat="server">
    <div>
     Name<asp:TextBox ID="namebox" runat="server" OnTextChanged="namebox_TextChanged"></asp:TextBox>
        <br />  <br />
&nbsp;Street<asp:TextBox ID="streetbox" runat="server"></asp:TextBox>
        <br />  <br />
 Phone Number  <asp:TextBox ID="phonebox" runat="server"></asp:TextBox>
 <asp:Button ID="Button1" runat="server" Text="Register" OnClick="Button1_Click" /><br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br /><br />

    </div>
    </form>

Register.aspx.cs:

  protected void Button1_Click(object sender, EventArgs e)//register button
    {
        try
        {
            SqlCommand myCommand = new SqlCommand();
            //SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings("Data Source=(LocalDB);MSSQLLocalDB;AttachDbFilename=|DataDirectory|;Database.mdf;Integrated Security=True"));

            SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\lab1.mdf;Integrated Security=True");
            //SqlConnection conn = new SqlConnection("ConnectionStringBooks");
            conn.Open();

            myCommand = new SqlCommand("INSERT INTO userdata(username, street, telephonenum) VALUES ('" + namebox.Text + "','" + streetbox.Text + "','" + phonebox.Text + "')", conn);

            myCommand.ExecuteNonQuery();
            Response.Redirect("~/Store.aspx?name="+namebox.Text+"");
        }
        catch (Exception ex)
        {
            Label1.Text = ex.Message;
            Label1.Visible=true;
        }

    }

2 个答案:

答案 0 :(得分:1)

ASP.NET验证控件验证用户输入数据,以确保无法存储无用,未经身份验证或相互矛盾的数据。

<asp:RequiredFieldValidator ID="rfvcandidate" 
   runat="server" ControlToValidate ="ddlcandidate"
   ErrorMessage="Please choose a candidate" 
   InitialValue="Please choose a candidate">

</asp:RequiredFieldValidator>

使用以下链接: http://www.tutorialspoint.com/asp.net/asp.net_validators.htm

答案 1 :(得分:0)

您可以在按钮点击事件中使用Regex。

要在C#中使用Regex,您需要创建一个新的Regex对象:

Regex regex = new Regex([expression]);

然后检查字符串是否与表达式匹配:

if(regex.match([string])){
     //ACCEPT DATA
}else{
     //REFUSE DATA
}

您需要的表达方式是:

  • 姓名/用户名:/ \ D + /
  • 电话号码:/ \ d + /
  • 街道:/ \ 1(\ D)\ 2(\ s)\ 3(\ d)/

我将此与Oli提到的必填字段验证器相结合:

<asp:RequiredFieldValidator ID="rfvcandidate" 
runat="server" ControlToValidate ="ddlcandidate"
ErrorMessage="Please choose a candidate" 
InitialValue="Please choose a candidate">

我不相信我对街道的回答最有效率,我对Regex来说相当新,所以如果有人提出更好的建议,我会感兴趣!我之所以这么说,我提供的正则表达式将会通过,如果它看到了12街&#39;街12&#39;因为它匹配&#39; 1&#39;。因此,它并不能阻止某人进入街12街12号街12号。

Regex的一个好网站似乎是:http://regexr.com