使用TagBuilder时,可以使用TagBuilder.Attributes.Add(..)
或TagBuilder. MergeAttribute(..)
向正在构建的HTML元素添加属性:
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);
但两者有什么不同,何时我更喜欢一个?
答案 0 :(得分:4)
通过使用dotPeek查看TagBuilder
,我可以看到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以提高可读性并确保不会产生意外结果。