Объявление состояния сеанса C #, передающее текстовое поле.Текст

#c# #asp.net #session #session-variables #session-state

#c# #asp.net #сеанс #переменные сеанса #состояние сеанса

Вопрос:

Хорошо, у меня довольно простая проблема, я хочу определить некоторые переменные состояния сеанса

До сих пор в моем коде на C # для страницы aspx у меня есть объявление следующего типа, которое отлично работает в моем файле index.aspx.cs.

 Session[Constants.firstName] = "Jordan";
  

или

 Session[Constants.firstName] = 123;
  

Я хочу захватить текст из текстовых полей index.aspx, хотя вместо этого вот так.

 Session[Constants.firstName] = txtb_FName.Text;
  

Проблема в том, что изменение этого значения на переменную txtb_FName.Текст не работает, и когда я отлаживаю, он показывает, что локальная переменная заполняется «», а не вводом из моего текстового поля.

Весь КОД выглядит следующим образом;

index.aspx

     <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="ProjectPhase02.index" %>

        <!DOCTYPE html>

        <html xmlns="http://www.w3.org/1999/xhtml">
        <head id="Head1" runat="server">
            <title>Project Phase 02</title>
            <link id="Link1" href="main.css" rel="stylesheet" runat="server" />
        </head>
        <body>
            <form id="form1" runat="server" method="get" action="accountCreationConfirmation.aspx">
            <div>
                <asp:Label CssClass="accountFormLable" runat="server" Text="First Name: "></asp:Label>
                <asp:TextBox ID="txtb_FName" runat="server"></asp:TextBox>
                <br />
                <asp:Label CssClass="accountFormLable" runat="server" Text="Last Name: "></asp:Label>
                <asp:TextBox ID="txtb_LName" runat="server"></asp:TextBox>
                <br />
                <asp:Label CssClass="accountFormLable" runat="server" Text="User Name: "></asp:Label>
                <asp:TextBox ID="txtb_UName" runat="server"></asp:TextBox>
                <br />
                <asp:Label CssClass="accountFormLable" runat="server" Text="Password: "></asp:Label>
                <asp:TextBox ID="txtb_Password" runat="server"></asp:TextBox>
                <br />
                <asp:Label CssClass="accountFormLable" runat="server" Text="Address: "></asp:Label>
                <asp:TextBox ID="txtb_Address" runat="server"></asp:TextBox>
                <br />
                <asp:Label CssClass="accountFormLable" runat="server" Text="Email: "></asp:Label>
                <asp:TextBox ID="txtb_Email" runat="server"></asp:TextBox>
                <br />
                <asp:Label CssClass="accountFormLable" runat="server" Text="Phone: "></asp:Label>
                <asp:TextBox ID="txtb_Phone" runat="server"></asp:TextBox>
                <br />

                <asp:Button ID="submitButton" runat="server" Text="Submit" />
            </div>
            </form>
        </body>
        </html>  

index.aspx.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ProjectPhase02
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Session[Constants.firstName] = txtb_FName.Text;
            Session[Constants.lastName] = txtb_LName.Text;
            Session[Constants.userName] = txtb_UName.Text;
            Session[Constants.password] = txtb_Password.Text;
            Session[Constants.address] = txtb_Address.Text;
            Session[Constants.email] = txtb_Email.Text;
            Session[Constants.phoneNumber] = txtb_Phone;
        }
    }
}
  

Constants.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ProjectPhase02
{
    public static class Constants
    {
        public static string firstName = "thatFName";
        public static string lastName = "thatLName";
        public static string userName = "thatUName";
        public static string password = "thatPass";
        public static string address = "thatAddress";
        public static string email = "thatEmail";
        public static string phoneNumber = "thatPNumber";
    }
}
  

accountCreationConfirmation.aspx.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ProjectPhase02
{
    public partial class accountCreationConfirmation : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string fN = (string) Session[Constants.firstName];
            string lN = (string) Session[Constants.lastName];
            string uN = (string) Session[Constants.userName];
            string pW = (string) Session[Constants.password];
            string ad = (string) Session[Constants.address];
            string em = (string) Session[Constants.email];
            string pN = (string) Session[Constants.phoneNumber];

            lbl_FName.Text = fN;
            lbl_LName.Text = lN;
            lbl_UName.Text = uN;
            lbl_Password.Text = pW;
            lbl_Address.Text = ad;
            lbl_Email.Text = em;
            lbl_Phone.Text = pN;
        }
    }
}
  

accountCreationConfirmation.aspx

     <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="accountCreationConfirmation.aspx.cs" Inherits="ProjectPhase02.accountCreationConfirmation" %>

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Project Phase 02</title>
        <link id="Link1" href="main.css" rel="stylesheet" runat="server" />
    </head>
    <body>
        <form id="form1" runat="server" >
        <div>
            <asp:Label CssClass="accountFormLable" runat="server" Text="First Name: "></asp:Label>
            <asp:Label ID="lbl_FName" runat="server"></asp:Label>
            <br />
            <asp:Label CssClass="accountFormLable" runat="server" Text="Last Name: "></asp:Label>
            <asp:Label ID="lbl_LName" runat="server"></asp:Label>
            <br />
            <asp:Label CssClass="accountFormLable" runat="server" Text="User Name: "></asp:Label>
            <asp:Label ID="lbl_UName" runat="server"></asp:Label>
            <br />
            <asp:Label CssClass="accountFormLable" runat="server" Text="Password: "></asp:Label>
            <asp:Label ID="lbl_Password" runat="server"></asp:Label>
            <br />
            <asp:Label CssClass="accountFormLable" runat="server" Text="Address: "></asp:Label>
            <asp:Label ID="lbl_Address" runat="server"></asp:Label>
            <br />
            <asp:Label CssClass="accountFormLable" runat="server" Text="Email: "></asp:Label>
            <asp:Label ID="lbl_Email" runat="server"></asp:Label>
            <br />
            <asp:Label CssClass="accountFormLable" runat="server" Text="Phone: "></asp:Label>
            <asp:Label ID="lbl_Phone" runat="server"></asp:Label>
            <br />
        </div>
        </form>
    </body>
    </html>  

main.css

 .accountFormLable {
        width: 100px;
        float: left;
        display: block;
        clear: left;
    }  

Комментарии:

1. Когда вы отлаживаете это, где конкретно теряется значение? Кажется действительно странным захватывать значения текстового поля Page_Load . Вы уверены, что не переписываете значение новым пустым значением, снова загружая страницу или что-то в этом роде?

2. @EdPlunkett Я подумал, что это может быть проблемой, я также попытался добавить OnClick «Событие» к кнопке, но кажется, что формы «Действие» пропускают этот OnClick даже полностью. Если я установлю точку останова при нажатии с именем «submitButton_Click», она никогда не достигнет этой точки останова. Поэтому я не уверен, что нужно было вводить код. protected void submitButton_Click(object sender, EventArgs e) { Session[Constants.firstName] = txtb_FName.Text; }

3. @Ed Если я жестко закодирую значение PageLoad , оно будет передано на вторую страницу PageLoad . >> Session[Constants.firstName] = "TestFirst";

4. @JordanWalker Пожалуйста, направьте эти комментарии Дэвиду, с которым вы на самом деле разговариваете. Все, что я сделал, это исправил ваши теги.

5. @David youtube.com/watch?v=QD8SVtd4enYamp;feature=youtu . в примере Suzuki он жестко кодирует некоторые значения для сеанса в событии загрузки страницы. Это нормально для простой передачи статической информации, но я хочу передавать значения из формы, которую я создал в Phase01. «TestFirst» — это жестко закодированное имя, полезное для тестирования. Я попытался настроить кнопку для события Onclick, но, похоже, OnClick даже никогда не срабатывает. Я ввожу перерыв для отладки, он никогда не запускает эту точку останова, пропуская код. Жесткое кодирование — единственный способ, которым я пока смог передать что-либо с помощью сеанса.