【问题标题】:textBox losing values on postback?文本框在回发时丢失值?
【发布时间】:2012-02-29 21:33:32
【问题描述】:

我有 asp.net 页面(Form = runat server)

2 个文本框:

<input type="text" id="tb1" />
<asp:TextBox ID="tb2" runat="server" />

还有一个按钮提交。

但是,当我将一些值放入其中时 - 并按下按钮 - 只有 tb2 从服务器取回其值。

我认为输入字段值总是从客户端到服务器并返回!

在什么情况下(在页面生命周期中)tb1 会失去它的价值?

【问题讨论】:

  • 你如何(在哪里)寻找 tb1 的价值?
  • @HenkHolterman 我想在屏幕上看到它

标签: c# asp.net page-lifecycle


【解决方案1】:

&lt;input type="text" id="tb1" /&gt; 是文字 HTML。
没有服务器端代码可以将值放回原处。

该功能是服务器端控件的一部分。

【讨论】:

  • 在什么情况下(页面生命周期内)tb1会失去价值?
  • @RoyiNamir 这个问题毫无意义。 tb1 不是服务器端控件,它根本不涉及服务器端页面生命周期。
  • tb1 的值永远不会被设置为服务器端的控件,因此它永远不会丢失其值。如果您愿意,可以通过 Request 属性访问该值。
  • @RoyiNamir 这就是问题所在,它甚至没有经过这个循环,至少这个 HTML 代码和服务器代码交互的唯一阶段是在呈现 HTML 时。所以如果你真的想接触这个 HTML,你需要重写 Render 方法。
  • @RoyiNamir: tb1 不存在。它只是文字 HTML;没有价值或对象。
【解决方案2】:

POST 将包含在 tb1 中输入的信息 - 因此可以从请求中读取它

如果你把它改成

<input type="text" id="tb1"  runat="server" /> 

它会按照你的意愿工作。

没有 runat=server 它不会“丢失”它的值 - 它永远不会被填充 - 因为它只是 POST 中的数据并且没有连接到服务器端控件。

最后一点 - 明确回答您的一些 cmets - POST 数据在 PreLoad 事件之前处理 - 这可以从 http://msdn.microsoft.com/en-us/library/ms178472.aspx 找到

【讨论】:

  • 我知道我可以通过 request.form 读取它,但在 asp.net 生命周期的哪个阶段 - 它会将值放回 tb2(而不是 tb1)?
  • @royi - 停止比较 tb1 和 tb2。它们完全不同。
  • 其他帖子是正确的 - 它不会被重新输入,因为这不是服务器端控件(当然,除非你输入 runat=server)
【解决方案3】:

tb1 不是服务器端控件,它是一个普通的 html dom 对象。

但是,您应该在 Request.Form 值集合中的帖子之后找到它的值。

【讨论】:

  • 我知道我可以通过 request.form 读取它,但在 asp.net 生命周期的哪个阶段 - 它会将值放回 tb2(而不是 tb1)
  • @RoyiNamir 查看我的其他回复。
猜你喜欢
  • 2011-03-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多