2

TagBuilderを使用する場合、作成中のHTML要素に属性を追加するTagBuilder.Attributes.Add(..)か使用できます。TagBuilder. MergeAttribute(..)

TagBuilder formBuilder = new TagBuilder("form");
formBuilder.Attributes.Add("method", "get");
formBuilder.Attributes.Add("action", url);

TagBuilder buttonBuilder = new TagBuilder("input");
buttonBuilder.MergeAttribute("type", "submit");
buttonBuilder.MergeAttribute("value", buttonText);

しかし、この2つはどのように異なり、いつ一方を他方よりも優先する必要がありますか?

4

1 に答える 1

4

TagBuilderdotPeekで見ると、AttributesがSortedDictionaryであることがわかります。

ctorから:

this.Attributes = new SortedDictionary<string, string>(StringComparer.Ordinal);

SotredSetでAddを呼び出すと、内部関数AddIfNotPresent(item)が呼び出されます。

public bool Add(T item)
{
  return this.AddIfNotPresent(item);
}

これはAttributes.Add、を設定せずにMergeAttributeを呼び出すのと同じことを意味しますreplaceExisting == true

   public void MergeAttribute(string key, string value, bool replaceExisting)
    {
      ...

      if (!replaceExisting && this.Attributes.ContainsKey(key))
        return;
      this.Attributes[key] = value;
    }

したがって、私のアドバイスは、AddではなくMergeAttributeを使用し、読みやすくするために常にreplaceExistingを指定し、予期しない結果が発生しないようにすることです。

于 2012-10-24T13:03:23.693 に答える