2

特定のタイプと特定の ID のコントロールにのみスキンを適用する方法はありますか? たとえば、会社の電話番号を表示するために使用されるサイト全体に、次のようなコントロールがあります。

<asp:Label ID="PhoneLabel" runat="server"></asp:Label>

プログラムでテーマを設定し、そのテーマのスキンを使用してラベルのテキスト プロパティを設定できるかどうか疑問に思っています。

私はこれができることを知っています

<asp:Label runat="server" Text="319-867-5309"></asp:Label>

しかし、それはサイト上のすべてのラベルのテキストを設定します. PhoneLabel の ID を持つラベルのテキストのみを設定したい。

SkinID プロパティも認識していますが、それは私のコントロールを特定のスキンに関連付けているようで、別のテーマを適用して電話番号のテキストを変更することはできません。

テーマ/スキンでこれを行うことはできませんか?

4

3 に答える 3

3

単に電話番号を表示したい (そしてそれをグローバルに変更できるようにしたい) 場合は、次の 2 つの方法の方が簡単です。


web.config ファイルから電話番号を読み取ります。例:

<asp:Label runat="server" Text="<%$ AppSettings:PhoneNumber %>"/>

電話番号を web.config の appSettings セクションに入力します。

<appSettings>
  <add key="phoneNumber" value="12344"/>

Label からクラスを派生させ、そのクラス内で Text プロパティを電話番号に設定します (ハードコード、または構成からの読み取りなど)。次に、電話番号を表示したいときはいつでも、標準の Label コントロールの代わりにそのコントロールを使用します。

これをApp_Codeに入れます:

namespace MyControls
{
    public class PhoneNumberLabel : Label
    {
        public override string Text
        {
            get { return "123456"; }
            set { base.Text = value; }
        }
    }
}

次に、そのコントロールを使用して電話番号を表示します。

<%@ Register Assembly="App_Code" Namespace="MyControls" TagPrefix="my" %>
....
<my:PhoneNumberLabel runat="server"></my:PhoneNumberLabel>
于 2009-09-22T21:08:20.900 に答える
1

はい、スキンファイルを使用してテキストを設定したり、テーマごとに異なるテキストを設定したりすることができます。

プロジェクトに「Theme1」と「Theme2」の2つのテーマがあるとします。各テーマには、「Default.skin」というファイルがあります。

設定したTheme1/Default.skinファイルで

<asp:Label runat="server" SkinID="PhoneLabel" Text="319-867-5309"></asp:Label>

設定したTheme2/Default.skinファイルで

<asp:Label runat="server" SkinID="PhoneLabel" Text="555-555-5555"></asp:Label>

あなたが設定したaspxファイルで

<asp:Label ID="PhoneLabel" SkinID="PhoneLabel" runat="server"></asp:Label>

web.configまたはaspxページのいずれかで、最初の番号が必要な場合はstyleSheetThemeを「Theme1」に設定し、2番目の番号が必要な場合は「Theme2」に設定します。

-

質問に答えたので、スキン/テーマがこれを行うための最良の方法ではない可能性があることを提案したいと思います。基になるデータソースから電話番号を取得するカスタム電話番号コントロールを作成したり、リソースファイルを使用したりするなど、他のソリューションもあります。

于 2009-09-22T20:50:07.683 に答える
0

私の知る限り、テーマとスキンでこれを行うことはできません。テーマに関連しない Id、Text などのプロパティは設定できません。コントロール クラスで ThemeableAttribute 属性が true に設定されているプロパティのみを設定できます。

http://msdn.microsoft.com/en-us/library/ykzx33wh.aspx

于 2009-09-22T20:27:58.710 に答える