2011-05-13 57 views
0

我有一个asp.net页面内容如下。在Panel中有一个HtmlInputText控件,其Enabled =“false”。我在btnSet_Click中设置HtmlInputText控件的Value属性,然后为面板设置Enabled = true。回发完成后,HtmlInputText的值将丢失。以下是我尝试的案例列表:asp.net 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; 
} 

回答

0

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

Web服务器控件给你更多的自由度,灵活性和控制这些控件的行为......所以用它来实现你的目的。

相关问题