ASP.net名称';userName';在当前上下文中不存在

本文关键字:上下文 不存在 userName net 名称 ASP | 更新日期: 2023-09-27 18:20:48

我已经点击了20多个链接,试图在不同的网站上解决这个问题。

请帮我

所以我尝试做一个简单的登录身份验证。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
public partial class Account_Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void loginButton_Click(object sender, EventArgs e)
{
    if(FormsAuthentication.Authenticate(UserName.Text, Password.Text)
    {
    }
}
}

但会弹出一条错误消息,称"当前上下文中不存在名称‘userName’",当前上下文中也不存在名称"Password"。

这是aspx代码

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"      CodeFile="Login.aspx.cs" Inherits="Account_Login" %>
 <asp:Content ID="Content3" ContentPlaceHolderID="MainContent" Runat="Server">
<hgroup class="title">
    <h1>Login Page</h1>
</hgroup>
<section id="loginForm">
    <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="loginButton" runat="server" CommandName="Login" Text="Log in" OnClick="loginButton_Click" />
            </fieldset>
        </LayoutTemplate>
    </asp:Login>
    <p>
        <a href="Register.aspx">Register</a>
        if you don't have an account.
    </p>
</section>

请帮助我:)

ASP.net名称';userName';在当前上下文中不存在

UserName位于Login控件内,因此您需要通过Login1控制访问它。

string userName = Login1.UserName;
string password = Login1.Password;    

代码中的另一个问题是,如果使用Login控件,则不应使用loginButton_Click事件。

相反,你需要根据你的饱腹感使用以下内容-

  • 登录
  • LoggedIn

C#区分大小写。根据您的控制ID:,它应该是大写"U"的用户名

<asp:TextBox runat="server" ID="UserName" />

您的代码应该是:

protected void loginButton_Click(object sender, EventArgs e)
{
    if(FormsAuthentication.RedirectFromLoginPage(UserName.Text, Password.Text)
    {
    }
}

编辑-注意到有问题的控件在用户控件内,因此代码现在应该是:

protected void loginButton_Click(object sender, EventArgs e)
{
    if(FormsAuthentication.RedirectFromLoginPage(Login1.UserName.Text, Password.Text)
    {
    }
}

但是,用户名ID 中仍然有一个拼写错误

代码区分大小写。

if(FormsAuthentication.RedirectFromLoginPage(UserName.Text, Password.Text)
{
}