C# ASP.NET では、次のようにクラスを追加してい<input>
ます。
myInput.Attributes.Add("class","myClass");
ある時点で、追加したクラスを削除したいと思います (すべてのクラスではありません)。次の行に沿って同等のものはありますか:
myInput.Attributes.Remove("class","myClass");
.Remove()
キーのみを受け入れるようです(ペア値はありません)。ありがとうございました!
属性の複数の値を管理するための組み込み機能はありません。
リストを解析し、クラス名を削除して、属性を更新する必要があります。
(未テスト)のようなもの:
var classes = myInput.Attributes["class"].Split(' ');
var updated = classes.Where(x => x != "classtoremove").ToArray();
myInput.Attributes["class"] = string.Join(" ", updated);
私は Odeds の投稿に触発され、詳しく説明できるようにこれら 2 つの拡張メソッドを作成しました。
public static void AddCssClass(this WebControl control, params string[] args)
{
List<string> classes = control.CssClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList<string>();
List<string> classesToAdd = args.Where(x => !classes.Contains(x)).ToList<string>();
classes.AddRange(classesToAdd);
control.CssClass = String.Join(" ", classes);
}
public static void RemoveCssClass(this WebControl control, params string[] args)
{
List<string> classes = control.CssClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList<string>();
classes = classes.Where(x => !args.Contains(x)).ToList<string>();
control.CssClass = String.Join(" ", classes);
}
これらのメソッドは、 または のように、 WebControls (ここからButton、Label、Panelなどがすべて継承されます) に CSS クラスを追加myButton.AddCssClass("class1", "class2");
または削除するために単純に使用されますmyButton.RemoveCssClass("class2");
。
少しオーバーヘッドがかかる可能性がありますが、空白を自分で処理する必要があるため、 CssClassプロパティの管理も少し面倒です。
たとえば、これを何回見たことがないでしょうか。
string myCssClass = "class1";
myButton.CssClass += " " + myCssClass;
メソッドを改善してください!:)