Asp.net 从 asp 中的文本框获取值到代码后面

Posted

技术标签:

【中文标题】Asp.net 从 asp 中的文本框获取值到代码后面【英文标题】:Asp.net get value from Textbox in aspx to code behind 【发布时间】:2014-05-01 16:38:18 【问题描述】:

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

两个文本框都是 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>

我确实从用户名和密码文本框中获取了值:

    使用代码:

    string user = this.UserName.Text;
    string pass = this.Password.Text;
    

    使用代码:

    Textbox UserName = this.FindControl("UserName");
    

    删除aspx.design.cs并右键单击表单并将其转换为应用程序;

    在设计器中,添加以下代码行:

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

到目前为止没有任何效果,当我到达这条线时:

string user = this.UserName.Text;

它给我一个错误:

对象引用未设置对象的实例。

你能建议任何解决我的问题的方法吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

成功了!非常感谢!!

以上是关于Asp.net 从 asp 中的文本框获取值到代码后面的主要内容,如果未能解决你的问题,请参考以下文章

从asp.net mvc的部分视图中的文本框中获取值

asp.net mvc c# - 是不是可以从 CodeBehind 中的模型访问视图中文本框的值?

如何从 javascript 文件中获取函数的值到 ASP.NET MVC 视图?

如何通过 C# ASP.net 从 SQL Server 中的文本框中存储日期

从 sql 数据源获取数据到 asp.net 控件中

如何在 asp.net 代码中获取引导文本框值并在存储过程中作为参数发送?