ASP.net Вход в сессию - PullRequest
       6

ASP.net Вход в сессию

2 голосов
/ 20 августа 2011

Я пытаюсь внедрить сеанс входа в свое веб-приложение. В настоящий момент я получаю сообщение об ошибке «Имя 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 - это те, которые имеют подчеркнутую ошибку

Ответы [ 3 ]

3 голосов
/ 20 августа 2011

Поскольку элементы управления находятся в шаблоне, элемент управления не знает о них во время разработки, поскольку не может быть гарантировано, какой шаблон загружен, как это делается во время выполнения, поэтому вам нужно будет использовать FindControl:

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

if (userNameTextBox != null)
{
    //proceed.
}
1 голос
/ 20 апреля 2015

это также sulotion -> LoginUser.txtUserName

1 голос
/ 20 августа 2011

Первая ошибка

из вашей разметки:

<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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...