asp.NET HtmlInputText внутри отключенной панели теряет свое значение при обратной передаче - PullRequest
0 голосов
/ 13 мая 2011

У меня есть содержимое страницы asp.net, как показано ниже. Внутри панели есть элемент управления HtmlInputText, который имеет значение Enabled = "false". Я установил свойство Value элемента управления HtmlInputText в btnSet_Click, а затем установил Enabled = true для панели. После завершения обратной передачи Значение HtmlInputText теряется. Ниже приведен список дел, которые я пытался:

  • Когда я использую asp: TextBox вместо HtmlInputText, он работает нормально. Но вышесказанное является упрощенной демонстрацией использования сложного пользовательского элемента управления. По сути, изменить это не вариант.
  • Когда я помещаю панель и кнопки в asp: UpdatePanel, она снова работает нормально.
  • Когда я установил disabled = "disabled" (в разметке) для элемента управления HtmlInputText, он снова работает нормально.

Что может быть причиной такого поведения?

<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;
}

1 Ответ

0 голосов
/ 13 мая 2011

На самом деле серверные элементы управления HTML (например, :) не имеют механизма для определения возможностей браузера клиента, обращающегося к текущей странице .Но элементы управления веб-сервером (например, asp: TextBox) не будут иметь проблем с совместимостью браузера, так как он сам позаботится о себе.

Элементы управления веб-сервера дают вам больше свободы, гибкости и контроля над поведением этих элементов управления... так что используйте их для своих целей.

...