【问题标题】:ASP.NET 4.5 Web App - Username/Password textboxesASP.NET 4.5 Web 应用程序 - 用户名/密码文本框
【发布时间】:2013-10-19 03:57:09
【问题描述】:

当我在 ASP.NET 4.5 / Visual Studio 2012 中启动 ASP.NET Web 应用程序时,在其 Login.aspx 页面中,有用户名和密码文本框以及登录按钮。

当我双击按钮(在 VS 中)时,它会在代码中创建点击事件。

当我尝试使用这样的用户名/密码框时:

string username = Username.Text;

它说用户名(文本框)在当前上下文中不存在。

代码Login.aspx.designer.cs 几乎为空。

namespace WebApplication2.Account
{


    public partial class Login
    {

        /// <summary>
        /// RegisterHyperLink control.
        /// </summary>
        /// <remarks>
        /// Auto-generated field.
        /// To modify move field declaration from designer file to code-behind file.
        /// </remarks>
        protected global::System.Web.UI.WebControls.HyperLink RegisterHyperLink;

        /// <summary>
        /// OpenAuthLogin control.
        /// </summary>
        /// <remarks>
        /// Auto-generated field.
        /// To modify move field declaration from designer file to code-behind file.
        /// </remarks>
        protected global::WebApplication2.Account.OpenAuthProviders OpenAuthLogin;
    }
}

Login.aspxhtml

<%@ Page Title="Log in" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="WebApplication5.Account.Login" %>
<%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %>

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
    <hgroup class="title">
        <h1><%: Title %>.</h1>
    </hgroup>
    <section id="loginForm">
        <h2>Use a local account to log in.</h2>
        <asp:Login 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 runat="server" AssociatedControlID="UserName">User name</asp:Label>
                            <asp:TextBox runat="server" ID="UserName" />
                            <asp:RequiredFieldValidator runat="server" ControlToValidate="UserName" CssClass="field-validation-error" ErrorMessage="The user name field is required." />
                        </li>
                        <li>
                            <asp:Label runat="server" AssociatedControlID="Password">Password</asp:Label>
                            <asp:TextBox runat="server" ID="Password" TextMode="Password" />
                            <asp:RequiredFieldValidator runat="server" ControlToValidate="Password" CssClass="field-validation-error" ErrorMessage="The password field is required." />
                        </li>
                        <li>
                            <asp:CheckBox runat="server" ID="RememberMe" />
                            <asp:Label runat="server" AssociatedControlID="RememberMe" CssClass="checkbox">Remember me?</asp:Label>
                        </li>
                    </ol>
                    <asp:Button runat="server" CommandName="Login" Text="Log in" />
                </fieldset>
            </LayoutTemplate>
        </asp:Login>
        <p>
            <asp:HyperLink runat="server" ID="RegisterHyperLink" ViewStateMode="Disabled">Register</asp:HyperLink>
            if you don't have an account.
        </p>
    </section>

    <section id="socialLoginForm">
        <h2>Use another service to log in.</h2>
        <uc:OpenAuthProviders runat="server" ID="OpenAuthLogin" />
    </section>
</asp:Content>

为什么这些控件不在 Designer.cs 中?

我错过了什么?

【问题讨论】:

    标签: asp.net asp.net-4.5


    【解决方案1】:

    在尝试创建 Login.aspx.designer.cs 文件时,您的项目中的其他内容听起来好像没有正确构建。

    我以前有过这个,虽然不是在一个新项目的登录页面上。

    通常,我删除设计器文件(不是 Login.aspx 或 Login.aspx.cs),然后右键单击 Login.aspx 并选择“转换为 Web 应用程序”。这将尝试创建具有所有正确内容的 Login.aspx.designer.cs 文件。

    如果您的项目依赖于它的项目出现问题,它会向您显示一条错误消息,告诉您出了什么问题……然后您可以修复项目中的潜在问题,然后尝试“转换为 Web”再次应用程序选项。

    希望对你有帮助,

    库尔特

    【讨论】:

    • 谢谢,但我尝试再次启动新项目,它又是空的。尝试删除设计师,并转换,它再次相同。它不会为文本框生成代码。我用 login.aspx 的 html 代码更新了问题,也许这可以帮助...
    • 表格根本没有被编辑过吗?登录表单没有 ID 属性:
    • 这是原始登录表单。它是 Visual Studio 2012。
    • 这里是修复...添加一个 ID(例如 ID="LoginForm")到页面中的 loginform 控件,然后使用 LoginForm.UserName 访问用户名
    • 添加 ID="LoginForm" 并使用 LoginForm.UserName 是否为您解决了这个问题?
    【解决方案2】:

    您为什么不尝试为控件提供实际的“ID”属性,而不是 AssociatedControlID="Whatever" 属性?

    【讨论】:

      【解决方案3】:

      我可以看到两个明显的问题:我有一个类似的问题

      1) 字符串用户名 = 用户名.文本; UserName 中的 'n' 没有大写,但智能感知会捕捉到那个 2) aspx.cs 文件,在第一行是指一个旧文件'WebApplication5'(见下文)

      Login.aspx.cs

      虽然 Designer.cs 文件中的命名空间是指 WebApplication2。这让我相信项目名称与这两个文件之一不同步。更正引用,您现在应该可以看到文件之间的变量了。

      Login.aspx.designer.cs

      命名空间 WebApplication2.Account

      希望对您有所帮助, -凯文

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 2013-06-24
        • 1970-01-01
        相关资源
        最近更新 更多