次のようなdivタグを作成しました。
System.Web.UI.HtmlControls.HtmlGenericControl dynDiv =
new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
次のようにdivタグにスタイルを追加しました:
dynDiv.Style.Add(HtmlTextWriterStyle.BorderStyle, "1px solid #DBE0E4");
dynDiv.Style.Add(HtmlTextWriterStyle.Height, "auto");
dynDiv.Style.Add(HtmlTextWriterStyle.MarginTop, "5px");
dynDiv.Style.Add(HtmlTextWriterStyle.PaddingBottom, "5px");
dynDiv.Style.Add(HtmlTextWriterStyle.Width, "682px");
しかし、フォルダー~/css/maincss.css
にある外部cssファイルを介してdivタグのスタイルを制御する必要があります。
そのファイルのCSSをこのdivに適用するにはどうすればよいですか?
dynDiv.Attributes["class"] = "myCssClass";
HtmlGenericControl
の方法で生成されたdivにクラスを追加するには、次を使用できます。
div1.Attributes.Add("class", "classname");
Panel
オプションを使用している場合、次のようになります。
panel1.CssClass = "classname";
要素のクラスの既存のリストにクラスを追加する場合:
element.Attributes.Add("class", element.Attributes["class"] + " " + sType);
私のアプローチは:
/// <summary>
/// Appends CSS Class seprated by a space character
/// </summary>
/// <param name="control">Target control</param>
/// <param name="cssClass">CSS class name to append</param>
public static void AppendCss(HtmlGenericControl control, string cssClass)
{
// Ensure CSS class is definied
if (string.IsNullOrEmpty(cssClass)) return;
// Append CSS class
if (string.IsNullOrEmpty(control.Attributes["class"]))
{
// Set our CSS Class as only one
control.Attributes["class"] = cssClass;
}
else
{
// Append new CSS class with space as seprator
control.Attributes["class"] += (" " + cssClass);
}
}
Curtの答えは正しいと思いますが、ASP.NETコードで宣言されたクラスが既にあるdivにクラスを追加する場合はどうでしょう。
これは私の解決策です。これは汎用メソッドなので、これを直接呼び出すことができます:
Asp Net Divの宣言:
<div id="divButtonWrapper" runat="server" class="text-center smallbutton fixPad">
クラスを追加するコード:
divButtonWrapper.AddClassToHtmlControl("nameOfYourCssClass")
ジェネリッククラス:
public static class HtmlGenericControlExtensions
{
public static void AddClassToHtmlControl(this HtmlGenericControl htmlGenericControl, string className)
{
if (string.IsNullOrWhiteSpace(className))
return;
htmlGenericControl
.Attributes.Add("class", string.Join(" ", htmlGenericControl
.Attributes["class"]
.Split(' ')
.Except(new[] { "", className })
.Concat(new[] { className })
.ToArray()));
}
}
これを繰り返す場合は、拡張メソッドを使用することもできます。
// appends a string class to the html controls class attribute
public static void AddClass(this HtmlControl control, string newClass)
{
if (control.Attributes["class"].IsNotNullAndNotEmpty())
{
control.Attributes["class"] += " " + newClass;
}
else
{
control.Attributes["class"] = newClass;
}
}
Cssファイルをdivに追加するのではなく、クラスを追加し、次のようにHTMLページの上部にインポートを配置します。
<link href="../files/external.css" rel="stylesheet" type="text/css" />
次に、次のようなクラスをコードに追加します: 'myStyle'。
次に、cssファイルで次のようにします。
.myStyle
{
border-style: 1px solid #DBE0E4;
}
拡張方法はどうですか?
ここに、showまたはhideメソッドがあります。 CSSクラスの使用hidden。
public static class HtmlControlExtensions
{
public static void Hide(this HtmlControl ctrl)
{
if (!string.IsNullOrEmpty(ctrl.Attributes["class"]))
{
if (!ctrl.Attributes["class"].Contains("hidden"))
ctrl.Attributes.Add("class", ctrl.Attributes["class"] + " hidden");
}
else
{
ctrl.Attributes.Add("class", "hidden");
}
}
public static void Show(this HtmlControl ctrl)
{
if (!string.IsNullOrEmpty(ctrl.Attributes["class"]))
if (ctrl.Attributes["class"].Contains("hidden"))
ctrl.Attributes.Add("class", ctrl.Attributes["class"].Replace("hidden", ""));
}
}
次に、コントロールを表示または非表示にする場合:
myUserControl.Hide();
//... some other code
myUserControl.Show();
要素のクラスの既存のリストにクラスを追加する場合の代替アプローチ:
element.Attributes["class"] += " myCssClass";