0

マスターページのあるシンプルなウェブサイトがあります。コンテンツページの要素(などTextbox)にプロパティを設定するには、CSSを使用します。デザイナーではうまく機能しますが、サイトを立ち上げると、コントロールにスタイルが適用されません。理由は簡単です。つまり、コンテンツページにTextBoxwithがあり、に配置されます。CSSファイルで、idを持つオブジェクトのプロパティを設定しました。マスターページ名のマングリングが原因でサイトを起動すると、マスターページに含まれているCSSファイルで定義されていないようなIDが取得されます。id="TextBox1"ContentPlaceHolder1#TextBox1ctl00_ContentPlaceHolder1_TextBox1

この問題の正しい解決策は何ですか?マングルされた名前をハードコーディングするのは良くないようです。

4

3 に答える 3

2

CssClass次のようにコントロールで 使用してCssClass="myClass"から、次の代わりにスタイルシートで使用します。

#TextBox1 { /* styles */ }

あなたはこれを持っているでしょう:

.myClass { /* styles */ }

.Net 4 が修正されたこと、または html で生成された ID をより適切に管理できるようになったことは注目に値します。詳細については、こちらを参照してください

于 2010-04-11T19:07:58.310 に答える
2

Nick と SLaks はどちらもクラスが最高だと言っています。クラス プロパティに複数のクラスを割り当てることができます。これにより、指定されたすべてのクラスからすべてのプロパティが集約され、以前のクラスと共有されているプロパティが上書きされます。css ファイル内のクラス定義の順序によって、それらが適用される順序が設定されます。

<style type="text/css">
.genericTextBox
{
background-color: #eee;
color: black;
}
.textbox1
{
background-color: #3ee;
font-size: larger;
}
</style>

<asp:TextBox id="textBox1" CssClass="textbox1 genericTextBox" runat="server"></asp:TextBox>

スタイルが適用される順序は最初の genericTextBox です。これは、スタイルで最初に定義されているためです (基本的に、クラス内の順序は無視されます)。色と背景色を設定すると、スタイル textbox1 が適用され、背景色が上書きされ、フォントサイズが追加されます。したがって、最終的には、generictextbox の色、textbox1 の background-color と font-size で終了します。

編集: TextBox で、クラスを CssClass に変更しました

于 2010-04-11T19:32:45.400 に答える
1

最も簡単な解決策は、IDの代わりにクラス名(マングルされない)を使用してCSSルールを適用することです。

正しい解決策はClientID、マングルされたIDを返すプロパティを使用することです。

例えば:

.Something #<%=TextBox1.ClientID %>` {
    color: red;
}

ただし、これはインラインスタイルシートに対してのみ実行できます。

于 2010-04-11T19:02:09.953 に答える