繁体   English   中英

ASP.net会话登录

[英]ASP.net Session login

我正在尝试在我的Web应用程序中实现会话登录。 目前,我收到错误消息“当前上下文中不存在名称'txtUserName'。当我检查aspx文件时,文本框ID =“ txtUserName”存在。

<h2>
    Log In
</h2>
<p>
    Please enter your username and password.
    <asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false">Register</asp:HyperLink> if you don't have an account.
</p>
<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
    <LayoutTemplate>
        <span class="failureNotification">
            <asp:Literal ID="FailureText" runat="server"></asp:Literal>
        </span>
        <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification" 
             ValidationGroup="LoginUserValidationGroup"/>
        <div class="accountInfo">
            <fieldset class="login">
                <legend>Account Information</legend>
                <p>
                    <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
                    <asp:TextBox ID="txtUserName" runat="server" CssClass="textEntry"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
                         CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required." 
                         ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                </p>
                <p>
                    <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
                    <asp:TextBox ID="txtPassword" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" 
                         CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required." 
                         ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                </p>
                <p>
                    <asp:CheckBox ID="RememberMe" runat="server"/>
                    <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
                </p>
            </fieldset>
            <p class="submitButton">
                <asp:Button ID="LoginButton" Onclick="LoginButton_Click" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/>
            </p>
        </div>
    </LayoutTemplate>
</asp:Login>

我当前在文件后面的代码是:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Web.Configuration;
using System.Collections.Generic;

namespace Project.Account
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
        }

        protected void LoginButton_Click(object sender, EventArgs e)
        {

            string connectionString = WebConfigurationManager.ConnectionStrings["DBConnectionString1"].ConnectionString;


            SqlConnection con = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand("LoginUsers", con);
            cmd.CommandType = CommandType.StoredProcedure;


            cmd.Parameters.Add(new SqlParameter("@UserName", SqlDbType.VarChar, 20));
            cmd.Parameters["@UserName"].Value = txtUserName.Text;

            cmd.Parameters.Add(new SqlParameter("@Password", SqlDbType.VarChar, 20));
            cmd.Parameters["@Password"].Value = txtPassword.Text;


                        }
    }
}

txtUSerName.Text和txtPassword.Text是带有下划线错误的代码

因为控件在模板中,所以控件在设计时并不知道它们,因为不能保证在运行时完成加载哪个模板,因此您将需要使用FindControl

var userNameTextBox = LoginUser.FindControl("txtUserName") as TextBox;

if (userNameTextBox != null)
{
    //proceed.
}

这也是一个sulotion-> LoginUser.txtUserName

第一个错误

从您的标记:

<asp:TextBox ID="txtUserName"
<asp:TextBox ID="txtPassword"

但是在后面的代码中,您正在使用:

if (UserName.Text == [@"Username"] && Password.Text == [@"Password"])

其次 ,登录代码中的控件无法在后面的代码中直接访问。 您必须找到控件并从中获取文本。 应该像...

cmd.Parameters["@USerName"].Value = 
                    ((TextBox)LoginUser.FindControl("txtUserName")).Text;

 cmd.Parameters["@Password"].Value = 
                    ((TextBox)LoginUser.FindControl("txtPassword")).Text;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM