我有一个名为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服务器中的备注值保持不变-“请勿关闭”。
这是因为每次加载页面时,此行代码都会覆盖输入值...
serverRemarksTB.Value = server.remarks;
以及基于所述ASP.NET管道生命周期,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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句