2016-05-14 7 views
0

Ich benutze Visual Studio 4.6.01038, und ich bin ziemlich neu in ASP.NET. Ich habe eine sehr einfache Registrierungsseite, auf der der Benutzer seinen Namen, seine Straße und seine Telefonnummer eingibt. Ich möchte die Eingabe in der Eingabebox so steuern, dass der Benutzer sie auf bestimmte Weise schreiben muss.Wie kann ich Benutzereingaben in ASP.NET überprüfen?

1) Name/Benutzername Feld nicht leer sein muss, und darf keine Zahlen

2) Straßennamen mit Buchstaben beginnen soll, dann sollte es einen Raum, dann sollte es eine Zahl sein, z.B. 12 Straße

3) die Telefonnummer muss nur Zahlen enthalten

Wenn der Benutzer wählen, anders als diese Formate, wird er wieder betreten gefragt. Nun, alle diejenigen, die gesagt werden, ich suche nach einer einfacheren Möglichkeit, es zu tun. [Kann von der Registerkarte Eigenschaften dieses bestimmten Textfeld sein?] Oder Wenn ich es programmgesteuert mache, wo soll ich es tun und wie? Hier

ist der Code, an dem ich arbeite:

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; 
     } 

    } 
+0

Ich würde vorschlagen, regex die Gültigkeit/Format der Eingabe zu überprüfen: https://msdn.microsoft.com/en-us/library/ms972966.aspx –

+0

'Straßenname soll mit Buchstaben beginnen, dann sollte es ein Leerzeichen sein, dann sollte es eine Nummer sein 'Ich fordere Sie dringend dazu auf zu lesen [Falschheitsprogrammierer glauben an Adressen] (https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-address /) –

+0

'die Telefonnummer darf NUR Zahlen enthalten 'dito [Unwahrheiten Programmierer glauben über Telefonnummern] (https://github.com/googlei18n/libphonenumber/blob/master/FALSEHOODS. md) –

Antwort

1

ASP.NET Validierungssteuer Validierung der Benutzereingabe Daten, um sicherzustellen, dass nutzlose, nicht authentifizierte oder widersprüchliche Daten nicht gespeichert werden.

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

</asp:RequiredFieldValidator> 

Verwendung unten stehenden Link: http://www.tutorialspoint.com/asp.net/asp.net_validators.htm

0

Sie können Regex in der Schaltfläche Click-Ereignis verwenden.

Um Regex in C# verwenden Sie ein neues Regex-Objekt erstellen würde:

Regex regex = new Regex([expression]); 

Und dann prüfen, ob ein String mit dem Ausdruck:

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

Die Ausdrücke, die Sie benötigen würden, sind:

  • Name/Nickname:/\ D +/
  • Telefonnummer:/\ d +/
  • Straße:/\ 1 (\ D) \ 2 (\ s) \ 3 (\ d)/

ich dieses Paar mit dem von Oli genannten Pflichtfeld Validator würde:

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

ich glaube nicht, meine Antwort für die Straße die effizienteste sein, ich auf Regex ziemlich neu bin, so würde mich interessieren, wenn jemand etwas besseres vorzuschlagen war! Meine Argumentation dafür ist, dass die Regex, die ich zur Verfügung gestellt habe, bestanden wird, wenn sie "Street 12" sieht, weil sie "t 1" entspricht. Es hört also niemanden auf, der 'Street 12 Street 12 Street 12' betritt.

Eine gute Website für Regex scheint zu sein: http://regexr.com