【问题标题】:asp.net normal html input runat="server" return non-updated value in code-behindasp.net 正常 html 输入 runat="server" 在代码隐藏中返回未更新的值
【发布时间】:2014-01-13 07:50:08
【问题描述】:

我有一个名为 editServer.aspx 的编辑服务器详细信息页面。在页面加载时,我从数据库中检索数据并将值设置为文本框。当用户点击保存按钮时,文本框中的值为空或未更新为用户键入的新值。

.aspx 中的部分代码

<input type="text" class="form-control" id="serverRemarksTB" name="serverRemarksTB" 
       placeholder="general server remarks" runat="server"/>
<asp:Button ID="editPhysicalServerBtn" runat="server" Text="Save" class="btn btn-success"
  style="padding-left:30px; padding-right:30px;" onclick="editPhysicalServerBtn_Click" />

在 .aspx.cs 中

 protected void Page_Load(object sender, EventArgs e)
 {
    //code to retrieve data from database and store in server instance
    serverRemarksTB.Value = server.remarks;
 }        
 protected void editPhysicalServerBtn_Click(object sender, EventArgs e)
 {      
     string remarks = serverRemarksTB.Value; //this is not updated.  
 }

例如,在数据库中,服务器备注是“不要关闭”。因此,当我打开 .aspx 页面时,我会看到带有“请勿关闭”的文本框。当我将值更改为“可以关机”并单击“保存”按钮时,aspx.cs 服务器备注值保持不变 - “不要关机”。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    这是因为每次加载页面时都会用这行代码覆盖输入的值...

    serverRemarksTB.Value = server.remarks;
    

    并基于ASP.NET Pipeline Lifecycle,首先执行Page_Load,然后再执行控件的事件处理程序。为避免这种情况,您只需要在页面首次加载时运行上述代码行......在GET 请求上而不是在POST 请求上。您可以像这样更改Page_Load 事件处理程序...

    protected void Page_Load(object sender, EventArgs e)
    {
            //code to retrieve data from database and store in server instance
            if(!IsPostBack)
                serverRemarksTB.Value = server.remarks;
     }
    

    【讨论】:

      【解决方案2】:

      使用IsPostBack 子句或每次页面加载时,您的文本框都将从数据库值中填充。

      当您单击保存按钮时,它会导致回发,从而导致您的 serverRemarksTB 值再次变为 “不要关机”。

      if(!Page.IsPostBack)
      {
      serverRemarksTB.Value = server.remarks;
      }
      

      【讨论】:

        【解决方案3】:

        这是因为您的 page_Load serverRemarksTB.Value = server.remarks;code 未包含在 IsPostback 块中。因此,当您发回表单时,文本框的值会更新为数据库值。你应该把你的数据库代码放在IsPostback检查里面。喜欢

         if(!IsPostBack)
            {
               serverRemarksTB.Value = server.remarks;
            } 
        

        在 Page_Load 方法中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-16
          • 2014-02-12
          • 1970-01-01
          • 1970-01-01
          • 2016-11-25
          相关资源
          最近更新 更多