自闭标签这是我如何创建我的复选框:HTML敏捷性包剥离从输入
HtmlInputCheckBox checkbox = new HtmlInputCheckBox();
checkbox.ID = _Data.ControlID;
checkbox.Attributes.Add("class", "checkbox");
checkbox.Attributes.Add("autocomplete", "off");
sReplacementString = element.RenderToString();
RenderToString
是一个扩展,做到这一点:
public static string RenderToString(this Control control)
{
StringBuilder sb = new StringBuilder();
using (StringWriter writer = new StringWriter(sb))
{
using (HtmlTextWriter htmlWriter = new HtmlTextWriter(writer))
{
control.RenderControl(htmlWriter);
}
}
return sb.ToString();
}
这将产生一个字符串输入上的结束标记,我可以在调试时看到。
<input name="ttWBF_1" type="checkbox" id="ttWBF_1" autocomplete="off" class="checkbox" />
它加入到使用敏捷性包这样的HTML:
HtmlNode temp = doc.CreateElement("temp");
temp.InnerHtml = sReplacementString;
HtmlNode current = inputNode;
foreach (HtmlNode child in temp.ChildNodes)
{
inputNode.ParentNode.InsertAfter(child, current);
current = child;
}
inputNode.ParentNode.RemoveChild(inputNode);
然而在HTML的复选框,输入标签丢失其自闭斜线,因此无法WC3验证。
<input name="ttWBF_1" type="checkbox" id="ttWBF_1" autocomplete="off" class="checkbox">
这发生在我用同样的方式生成的文本框中。使用敏捷包将HTML添加到页面时,它看起来像迷失了方向。
我该如何预防?
哪个W3C验证失败?你期待XHTML输出吗? HTML是否支持自闭标签? – sisve 2012-04-17 09:28:14
我们的需求是用于XHTML 1.1的验证 - 我们得到这个错误:'输入的结束标记被省略,但是OMITTAG NO被指定 - 您可能忽略了关闭一个元素,或者您可能意图“自我关闭”一个元素,即以“/>”而不是“>”结尾。 ' – Jon 2012-04-17 09:30:26
您是使用WriteTo(TextWriter)还是WriteTo(XmlWriter)?你有没有设置doc.OptionOutputAsXml? – sisve 2012-04-17 15:53:41