1

以下を含むスキン ファイルがあります。

< asp:TextBox runat="server" CssClass="FixedFont"/>

スキン ファイルと同じフォルダーに、次の css ファイルがあります。Css ファイルには以下が含まれます。

.FixedFont
    {
    font-family:Courier;    
    }

最後に、次のコントロールを含む ASPX ページがあります。

<asp:TextBox ID="TextBox1" runat="server">Test</asp:TextBox>

ASPX ページをデザイン モードで表示するかページを実行すると、スタイルの font-family 属性がテキスト ボックス コントロールに影響を与えることがわかります。つまり、Courier に変更されます。

しかし、私がやりたいことは、ASPX ページでローカル スタイルを定義することです。

.DefaultWidth
    {
    width: 300px;
    }

...そして、すべての TextBoxes を同じ幅になるようにします。

TextBox1 の CssClass プロパティを "DefaultWidth" に設定すると...

<asp:textbox ID="TextBox1" CssClass="DefaultWidth">Hello</asp:TextBox>

...テキストボックスの幅が 300px に変更されましたが、固定フォント Courier スタイルを適用したスキンの効果が失われました。

DefaultWidth と固定フォント テキストボックス効果の両方の効果を適用するには、CSSClass プロパティを "DefaultWidth FixedFont" に設定する必要があります。SKIN と競合するスタイルを追加しない限り、効果が CUMULATIVE になると予想していたと思います。その場合、ローカル クラスがスキンの効果に適用されると予想していました。たとえば、他の効果に加えて font-family 仕様も含む 2 番目のクラス Class2 を適用した場合、Class2 で指定されたフォントが FixedFont スタイルのフォントをオーバーライドすることが予想されます。しかし、それはここで起こっていることではないようです。

このような状況を管理する最善の方法は何ですか? すべての幅が一致する一連のテキスト ボックスが必要になることが非常に多いので、コントロールに適用される効果をスキン ファイルのタイプで使用することに加えて、コントロールに CssClass を指定することが非常に頻繁になると思います。

SKIN自体でCSSを使用しないという解決策はありますか? これはメンテナンスの面でもデメリットがあるようです。

私が抱えている二次的な問題は、次のクラスでスタイルシートを宣言すると..

.Button
{
    background-image: url('/images/button.gif')
}

...そして、ASP ボタンの CSSClass プロパティを「ボタン」に設定すると、ボタンの上に画像が並べて表示されます。

ただし、スキンファイルに次のコードを入力すると

画像が見つかりません。

images フォルダーは、Web サイトのルートから離れた第 1 レベルのフォルダーです。

画像を取得していない理由。私は他のさまざまな方法を試しましたが、それが私にとって理にかなっていると思われる唯一のものです。

ちなみに画像はデザインモードで適用していますが、ityを実行すると消えます。

4

1 に答える 1