ASP.NET 4.5 Web App - 用户名/密码文本框

时间:2013-05-26 18:47:53

标签: asp.net asp.net-4.5

当我在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.aspx html

<%@ 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中?

我缺少什么?

3 个答案:

答案 0 :(得分:1)

在尝试创建Login.aspx.designer.cs文件时,听起来项目中的其他内容无法正常构建。

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

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

如果您的项目中出现了某些问题,它会依赖于它,它会显示一条错误消息,告诉您出现了什么问题......然后您可以修复项目中的基础问题,然后尝试“转换为Web”再次申请'选项。

希望这有帮助,

库尔特

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

1)string username = Username.Text; UserName中的'n'不是大写的,但intellisense会抓住那个 2)aspx.cs文件,第一行是指旧文件'WebApplication5'(见下文)

Login.aspx.cs

  

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

Login.aspx.designer.cs

  

命名空间WebApplication2.Account

希望有所帮助, -Kevin