0

以下のようなasp.netページのコンテンツがあります。Enabled="false" を持つ Panel 内に HtmlInputText コントロールがあります。btnSet_Click で HtmlInputText コントロールの Value プロパティを設定し、パネルに対して Enabled=true を設定します。ポストバックが終了すると、HtmlInputText の値が失われます。以下は私が試したケースのリストです:

  • HtmlInputText の代わりに asp:TextBox を使用すると、正常に動作します。ただし、上記は複雑なユーザー コントロールの使用法を簡単に示したものです。基本的に、変更はできません。
  • パネルとボタンを 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 に答える