以下を含むスキン ファイルがあります。
< 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を実行すると消えます。