我正在编写一些代码来为后面的代码中的head标签添加一个链接标签...即
HtmlGenericControl css = new HtmlGenericControl("link"); css.Attributes["rel"] = "Stylesheet"; css.Attributes["type"] = "text/css"; css.Attributes["href"] = String.Format("/Assets/CSS/{0}", cssFile);
尝试实现类似......
我正在使用HtmlGenericControl来实现这个...我遇到的问题是控件最终呈现为......
我似乎无法找到我缺少的不渲染额外的东西,我认为它应该是对象的属性.
我是否遗漏了某些东西,或者这种控制是不可能的?
谢谢
我认为你必须从中衍生出来HtmlGenericControl
并覆盖该Render
方法.
然后你就可以自己写出"/>"(或者你可以使用HtmlTextWriter的SelfClosingTagEnd
常量).
编辑:这是一个例子(在VB中)
在尝试编写解决方法时,umbraco.library:RegisterStyleSheetFile(string key, string url)
我最终得到了与OP相同的问题并找到了以下内容.
根据规范,link标签是一个void元素.它不能有任何内容,但可以自我关闭.W3C验证器未验证为正确的html5.
显然地
HtmlGenericControl css = new HtmlGenericControl("link");
默认情况下呈现为.使用链接标记的特定控件解决了我的问题:
HtmlLink css = new HtmlLink();
它产生的标记被验证为正确的xhtml和html5.
除了链接,System.Web.UI.HtmlControls还包含其他void元素控件的类,例如img,input和meta.