我有一个这样的文本框:
<asp:TextBox runat="server" ID="reasonNameTextBox"></asp:TextBox>
当我第一次加载页面时,我在其中放入一个值,如下所示:
reasonNameTextBox.Text = results.Rows[0]["reasonName"].ToString();
然后,用户可以输入新值,然后单击“保存”按钮。
当用户单击“保存”按钮时,文本框的值仍然是我在加载页面时分配的值,而不是用户编写的值。 我尝试使用Google Chrome F12功能,但我发现了错误。
请看这个图片
如您所见,我在文本框中写的值为New Value
,但是,文本框中的值(使用F12时)仍为s
,其中s
是加载页面时指定的值。
为什么这样?
答案 0 :(得分:2)
这是因为每次点击您回发的按钮并再次重新加载页面时,请调用 Page_Load ,然后分配您在页面加载期间分配的值。
要避免这种情况,您需要执行以下操作: -
If(!IsPostback)
{
reasonNameTextBox.Text = results.Rows[0]["reasonName"].ToString();
}
这样,您不会使用在 Page_Load 期间设置的defaultvalue更新文本框值,并且会获取用户更新的值。
答案 1 :(得分:1)
更改值不会更新DOM(除非您通过javascript更改它)。因此,通过开发人员工具检查文本框,就像您一样,生成从服务器收到的文本值。
有趣的部分在于你的WebPage的CodeBehind文件。我认为它看起来与此相似:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var results = GetResults();
reasonNameTextBox.Text = results.Rows[0]["reasonName"].ToString();
}
}
在这种情况下,无论用户输入如何,每次都会设置文本框的值。你需要做的是寻找回发:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var results = GetResults();
if (IsPostBack)
{
// retrieve the user input
var input = reasonNameTextBox.Text;
}
else
{
// set default value
reasonNameTextBox.Text = results.Rows[0]["reasonName"].ToString();
}
}
}