2014-05-01 16 views
9

Ich erstelle ein Login-System in ASP.NET und C# Programmiersprache. Der Code hinter dem Benutzer und Passwort ist fertig. Aber in Ansichtsschicht, ich bin beunruhigend, um die Werte von Benutzername Textbox und Passwort Textbox und übergibt es an Codebehind.Asp.net erhalten Wert von Textbox in ASPX Code hinter

Beide Textfelder sind ID identifiziert und in meinen wenigen Fähigkeiten der Programmierung sollte eine ID genug sein, um auf die Elemente zuzugreifen.

Dies ist meine aspx Login-Seite:

<asp:Login ID="Login1" runat="server" ViewStateMode="Disabled" RenderOuterTable="false"> 
     <LayoutTemplate> 
      <p class="validation-summary-errors"> 
       <asp:Literal runat="server" ID="FailureText" /> 
      </p> 
      <fieldset> 
       <legend>Log in Form</legend> 
       <ol> 
        <li> 
         <asp:Label ID="Label1" runat="server" AssociatedControlID="UserName">User name</asp:Label> 
         <asp:TextBox runat="server" ID="UserName" /> 
         <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="UserName" CssClass="field-validation-error" ErrorMessage="The user name field is required." /> 
        </li> 
        <li> 
         <asp:Label ID="Label2" runat="server" AssociatedControlID="Password">Password</asp:Label> 
         <asp:TextBox runat="server" ID="Password" TextMode="Password" /> 
         <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="Password" CssClass="field-validation-error" ErrorMessage="The password field is required." /> 
        </li> 
        <li> 
         <asp:CheckBox runat="server" ID="RememberMe" /> 
         <asp:Label ID="Label3" runat="server" AssociatedControlID="RememberMe" CssClass="checkbox">Remember me?</asp:Label> 
        </li> 
       </ol> 
       <asp:Button ID="Button1" runat="server" CommandName="Login" Text="Log in" OnClick="Button1_Click"/> 
      </fieldset> 
     </LayoutTemplate> 
    </asp:Login> 

Dies tat ich Werte von Username und Passwort Textfelder erhalten:

  1. den Code verwenden:

    string user = this.UserName.Text; 
    string pass = this.Password.Text; 
    
  2. Verwendung der Code:

    Textbox UserName = this.FindControl("UserName"); 
    
  3. Die aspx.design.cs gelöscht und klicken Sie mit der rechten Maustaste auf das Formular und konvertieren Sie es in die Anwendung;

  4. im Designer, fügen Sie die folgenden Codezeilen:

    protected global::System.Web.UI.WebControls.TextBox UserName; 
    protected global::System.Web.UI.WebControls.TextBox Password; 
    

Nichts funktionierte so weit, und wenn ich diese Zeile erreichen:

string user = this.UserName.Text; 

Es wirft mir ein Fehler :

Object Reference not set an instance of an object.

Können Sie schlagen Sie irgendeine Lösung für mein Problem vor?

Antwort

10

Dies liegt daran, dass diese Steuerelemente Teile einer Vorlage sind. Sie sind nicht direkt auf der Seite, sie werden dort dynamisch hinzugefügt, wenn das Steuerelement Login initialisiert wird. Um darauf zuzugreifen, benötigen Sie FindControl:

+0

Es funktionierte! Danke vielmals!! – VCore

Verwandte Themen