asp.net表单不保留该字段的值

时间:2013-07-22 16:48:24

标签: asp.net

我有一张表格:

    <%@ Page Title="" Language="C#" MasterPageFile="~/site.master" AutoEventWireup="true"
Inherits="DataEntry_EntryForm1" EnableEventValidation="false" CodeBehind="Bio.aspx.cs" %>

    <%@ MasterType VirtualPath="~/site.master" %>

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
    </asp:Content>


    <asp:Content ID="Content3" ContentPlaceHolderID="Content" runat="Server">

    <asp:TableRow>
        <asp:TableCell  >
        <asp:Label ID="lblRoomNum" runat="server" Text="Room #"  Width="100px" ></asp:Label> 
       </asp:TableCell>
      <asp:TableCell HorizontalAlign="Left">
           <asp:TextBox ID="txtRoomNum" runat="server" Width="100px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage=" Room # is required." ForeColor="Red" ControlToValidate="txtRoomNum"></asp:RequiredFieldValidator>
                  </asp:TableCell>

      </asp:Table>

        <div style="width: 300px; margin: 20px 250px">
         <asp:Button ID="txtSubmit" runat="server" Text="Submit" OnClick="txtSubmit_Click" />
       </div>

     </asp:Content>

我使用相同的表单来创建新记录以及更新它。当我创建一个新记录时,它工作正常。 当我尝试使用已填写的数据更新记录时,表单不会保留该值。相反,它保留了之前的价值。

我在做什么事吗?

以下是代码隐藏代码:

     protected void txtSubmit_Click(object sender, EventArgs e)
       {

          string s = txtRoomNum.Text;

      }

它显示旧值而不是更新的代码。

2 个答案:

答案 0 :(得分:1)

您应该查看 IsPostBack 属性。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        loadOldValue();
    }
}

public void loadOldValue()
{
    txtRoomNum.Text = "OLD VALUE";
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
    string s = txtRoomNum.Text;
}

说明:每次单击提交按钮时,Page_Load()函数都会调用。因此,如果您在Page_Load()中加载旧值,它将始终具有旧值。 要避免这种情况,请使用!IsPostBack属性。如果页面不是回发帖子,则会加载旧值。否则,它将允许您在文本框中使用新值。

答案 1 :(得分:0)

用它来获取价值:

string s=Request.Form[txtRoomNum.UniqueID];