0

カスタムASP.NETサーバーコントロールを作成しました。コントロールをレンダリングするときに、this.Enabledプロパティをチェックして、disabled属性をタグに追加する必要があるかどうかを判断します(以下のコードの抜粋)。特にEnabledフラグを設定しない限り、この値は、パネルの状態に関係なくTrueになります。

output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
if (!this.Enabled)
{
    output.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
}
output.AddAttribute(HtmlTextWriterAttribute.Value, this.DisplayName);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();

テキストボックスなどの標準サーバーコントロールは、このシナリオでは期待どおりに動作し、無効になっています。

コントロールが実際に無効にされるかどうかを確認できるようにするために実装する必要があるパターンは何ですか?親をチェックして、それらのいずれかがパネルであるかどうかを確認してから、それらが有効になっているかどうかを確認する必要がありますか?その場合、非常に非効率的なようです。

ありがとうマーク

4

1 に答える 1

1

ちょうどそれを見つけました。

コードを次のように変更する必要があります。

output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
if (!this.IsEnabled)
{
    output.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
}
output.AddAttribute(HtmlTextWriterAttribute.Value, this.DisplayName);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();
于 2013-01-25T05:33:15.970 に答える