Hen*_*bæk 3 c# tagbuilder asp.net-mvc-3
使用 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);
Run Code Online (Sandbox Code Playgroud)
但这两者有什么不同,我什么时候应该选择其中一种而不是另一种呢?
通过查看TagBuilderdotPeek,我可以看到 Attributes 是一个 SortedDictionary
来自演员:
this.Attributes = new SortedDictionary<string, string>(StringComparer.Ordinal);
Run Code Online (Sandbox Code Playgroud)
在 SotredSet 上调用 Add 最终会调用内部函数 AddIfNotPresent(item)
public bool Add(T item)
{
return this.AddIfNotPresent(item);
}
Run Code Online (Sandbox Code Playgroud)
这意味着这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;
}
Run Code Online (Sandbox Code Playgroud)
因此,我的建议是使用 MergeAttribute 而不是 Add,并始终指定 ReplaceExisting 以提高可读性并确保不会出现意外结果。
| 归档时间: |
|
| 查看次数: |
3340 次 |
| 最近记录: |