我使用的是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 />
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;
}
}
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
您可以在按钮点击事件中使用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">
我不相信我对street的回答会是最有效的,我是Regex的新手,所以如果有人能提出更好的建议,我会很感兴趣!我这样说的理由是,如果我提供的regex看到"Street 12",它就会通过,因为它匹配"t1"。因此,它不会阻止有人进入"12街12街12号"。
Regex的一个好网站似乎是:http://regexr.com