2014-05-01 42 views
9

我正在用asp.net和C#编程语言创建一个登录系统。处理用户和密码的代码已完成。但在视图层,我很烦恼从用户名文本框和密码文本框中获取值并将其传递给代码隐藏。Asp.net从aspx中的文本框中获取值到后面的代码

这两个文本框都是ID标识的,在我的编程技巧方面,一个ID应该足以访问这些元素。

这是我的aspx登录页面:

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

该我做的用户名和密码文本框获取值:

  1. 使用代码:

    string user = this.UserName.Text; 
    string pass = this.Password.Text; 
    
  2. 使用代码:

    Textbox UserName = this.FindControl("UserName"); 
    
  3. 删除aspx.design.cs并右键单击表单并将其转换为应用程序;

  4. 在设计中添加的代码下面几行:

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

毫无效果,到目前为止,当我到达这条线:

string user = this.UserName.Text; 

这引发了我一个错误:

Object Reference not set an instance of an object.

你可以吗对我的问题提出任何解决方案?

回答

10

这是因为这些控件是模板的一部分。它们不是直接在页面上,当Login控制被初始化时,它们被动态地添加到那里。要访问它们,您需要FindControl

string user = ((TextBox)Login1.FindControl("UserName")).Text; 
+0

It Worked!非常感谢!! – VCore

相关问题