4

C# ASP.NET では、次のようにクラスを追加してい<input>ます。

myInput.Attributes.Add("class","myClass");

ある時点で、追加したクラスを削除したいと思います (すべてのクラスではありません)。次の行に沿って同等のものはありますか:

myInput.Attributes.Remove("class","myClass");

.Remove()キーのみを受け入れるようです(ペア値はありません)。ありがとうございました!

4

2 に答える 2

10

属性の複数の値を管理するための組み込み機能はありません。

リストを解析し、クラス名を削除して、属性を更新する必要があります。

(未テスト)のようなもの:

var classes = myInput.Attributes["class"].Split(' ');

var updated = classes.Where(x => x != "classtoremove").ToArray();

myInput.Attributes["class"] = string.Join(" ", updated);
于 2012-05-15T12:28:14.427 に答える
2

私は 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 (ここからButtonLabelPanelなどがすべて継承されます) に CSS クラスを追加myButton.AddCssClass("class1", "class2");または削除するために単純に使用されますmyButton.RemoveCssClass("class2");

少しオーバーヘッドがかかる可能性がありますが、空白を自分で処理する必要があるため、 CssClassプロパティの管理も少し面倒です。

たとえば、これを何回見たことがないでしょうか。

string myCssClass = "class1";
myButton.CssClass += " " + myCssClass;

メソッドを改善してください!:)

于 2012-05-15T16:00:53.437 に答える