[英]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.