Текстовое поле не будет обновляться после редактирования

1

У меня есть страница с именем info.aspx, где пользователь вводит свою информацию. После ввода информации она перейдет на следующую страницу под названием confirm.aspx, где пользователь может подтвердить данные или нажать кнопку редактирования, и она вернет их обратно в info.aspx, где они смогут редактировать информацию.

Как только я нажму кнопку "Изменить", он будет предварительно заполнять значения из переменных сеанса. Но проблема в том, что если я изменю последнее имя в текстовом поле, и он перейдет на следующую страницу, он не обновится, он сохранит старое значение. Я отлаживаю и вижу, что tbLastName, например, сохраняет одно и то же Фамилию, даже если я его меняю. Я что-то упустил?

У меня это хранится в переменных сеанса.

info.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["FirstName"] != null)
    {
        tbFirstName.Text = Session["FirstName"].ToString();
        tbLastName.Text = Session["LastName"].ToString();
        tbDOB.Text = Session["DOB"].ToString();
        tbEmail.Text = Session["Email"].ToString();
        tbTelephone.Text = Session["Telephone"].ToString();
    }
}
protected void btnNext_Click(object sender, EventArgs e)
{
    Session["FirstName"] = tbFirstName.Text;
    Session["LastName"] = tbLastName.Text;
    Session["DOB"] = tbDOB.Text;
    Session["Email"] = tbEmail.Text;
    Session["Telephone"] = tbTelephone.Text;
    Response.Redirect("~/appointments/confirm.aspx");
}

info.aspx

<table class="warning" style="width: inherit;">
<tr>
    <td>
        First Name:
    </td>
    <td>
        <asp:TextBox ID="tbFirstName" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator2" ControlToValidate="tbFirstName"
            Text="*" ForeColor="Yellow" ValidationGroup="InsertInformation" />
    </td>
</tr>
<tr>
    <td>
        Last Name:
    </td>
    <td>
        <asp:TextBox ID="tbLastName" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator3" ControlToValidate="tbLastName"
            Text="*" ForeColor="Yellow" ValidationGroup="InsertInformation" />
    </td>
</tr>
<tr>
    <td>
        Date of Birth:
    </td>
    <td>
        <asp:TextBox ID="tbDOB" runat="server"></asp:TextBox>
        <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender1" runat="server" Mask="99/99/9999"
            AcceptNegative="None" MessageValidatorTip="true" TargetControlID="tbDOB" ClearMaskOnLostFocus="false"
            ClearTextOnInvalid="false" MaskType="Date" />
        <ajaxToolkit:MaskedEditValidator ID="MaskedEditValidator5" runat="server" ControlExtender="MaskedEditExtender1"
            ControlToValidate="tbDOB" Display="Dynamic" ForeColor="Yellow" EmptyValueBlurredText="*"
            InvalidValueBlurredMessage="*" ValidationGroup="InsertInformation" />
    </td>
</tr>
<tr>
    <td>
        Email:
    </td>
    <td>
        <asp:TextBox ID="tbEmail" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator1" ControlToValidate="tbEmail"
            Text="*" ForeColor="Yellow" ValidationGroup="InsertInformation" />
    </td>
</tr>
<tr>
    <td>
        Telephone:
    </td>
    <td>
        <asp:TextBox ID="tbTelephone" runat="server"></asp:TextBox>
        <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender" runat="server" Mask="(999)999-9999"
            AcceptNegative="None" MessageValidatorTip="true" TargetControlID="tbTelephone"
            MaskType="Number" ClearMaskOnLostFocus="false" ClearTextOnInvalid="false" />
    </td>
</tr>
<tr>
    <td>
        &nbsp;
    </td>
    <td>
        <asp:Button ID="btnNext" runat="server" Text="Next" OnClick="btnNext_Click" ValidationGroup="InsertInformation" />
    </td>
</tr>

confirm.aspx.cs

protected void btnEditInfo_Click(object sender, EventArgs e)
{
   Response.Redirect("/info.aspx");
}
Теги:
textbox
visual-studio-2010

2 ответа

3
Лучший ответ

Он переписывает текстовые поля при отправке сообщения назад.

Попробуй это:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["FirstName"] != null && !IsPostback)
    {
        tbFirstName.Text = Session["FirstName"].ToString();
        tbLastName.Text = Session["LastName"].ToString();
        tbDOB.Text = Session["DOB"].ToString();
        tbEmail.Text = Session["Email"].ToString();
        tbTelephone.Text = Session["Telephone"].ToString();
    }
}
  • 0
    Отличный улов. Я этого не видел. Спасибо.
0

При нажатии на BtnNext перед переадресацией вызывается событие Page_Load файла info.aspx.cs. Вам просто нужно проверить свойство IsPostBack в Page_Load из info.aspx.cs, как упоминал Джейсонварфорд. Таким образом, текстовое поле не сбрасывается:

if (!IsPostBack)
{
    tbFirstName.Text = Session["FirstName"].ToString();
    tbLastName.Text = Session["LastName"].ToString();
    tbDOB.Text = Session["DOB"].ToString();
    tbEmail.Text = Session["Email"].ToString();
    tbTelephone.Text = Session["Telephone"].ToString();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню