我有一个像这样的扩展方法来创建一个按钮范围:
public static HtmlString Ext1(this HtmlHelper helper, string css)
{
var tag = new TagBuilder("span");
tag.AddCssClass(css);
...
return new HtmlString(tag.ToString());
}
我创建了另一个扩展,将属性添加到HtmlString ......就像那样:
public static HtmlString Ext2(this HtmlString helper, string attr)
{
// need add attr to HtmlString and return
return new HtmlString(newHtmlGenerated);
}
使用@Html.Ext1("class1").Ext2("1234")
应该使用css和attr创建一个范围...
我该怎么做?
由于
答案 0 :(得分:1)
就像@levelnis所说,你不能从Html创建TagBuilder
,你只能从标签名称创建它。您必须使用将Html解析为具体类型的内容,以允许您访问属性。 XDocument
会做得很好。尝试将Ext2
方法更改为:
public static HtmlString Ext2(this HtmlString helper, string attr)
{
var doc = XDocument.Parse(helper.ToHtmlString());
doc.Element(doc.Root.Name).SetAttributeValue("test", attr);
return new HtmlString(doc.ToString());
}
XDocument
位于System.Xml.Linq
命名空间中。