0

我有一个 asp.net 页面内容如下。Panel 中有一个 HtmlInputText 控件,该控件具有 Enabled="false"。我在 btnSet_Click 中设置了 HtmlInputText 控件的 Value 属性,然后为面板设置了 Enabled=true。回发完成后 HtmlInputText 的值丢失。以下是我尝试过的案例列表:

  • 当我使用 asp:TextBox 而不是 HtmlInputText 它工作正常。但以上是复杂用户控件用法的简化演示。基本上,改变它不是一种选择。
  • 当我将面板和按钮放在 asp:UpdatePanel 中时,它又可以正常工作了。
  • 当我为 HtmlInputText 控件设置 disabled="disabled" (在标记中)时,它又可以正常工作了。

这种行为的原因可能是什么?

<asp:Panel ID="pnl" runat="server" Enabled="false">
  <input type="text" runat="server" id="txt" />
</asp:Panel>
<asp:Button ID="btnSet" runat="server" Text="Set" OnClick="btnSet_Click" />
<asp:Button ID="btnEnable" runat="server" Text="Enable" OnClick="btnEnable_Click" />

--

protected void btnSet_Click(object sender, EventArgs e)
{
   txt.Value = "Test";
}

protected void btnEnable_Click(object sender, EventArgs e)
{
   pnl.Enabled = true;
}
4

1 回答 1

0

实际上,HTML 服务器控件(例如:)没有识别客户端浏览器访问当前页面的能力的机制。但是 Web 服务器控件(例如:asp:TextBox)不会有浏览器兼容性问题,因为它会自行处理。

Web 服务器控件为您提供了更多的自由度、灵活性和对这些控件行为的控制......所以将它们用于您的目的。

于 2011-05-13T13:46:18.937 回答