为什么XhtmlTextWriter忽略自定义属性



我发现了一些奇怪的行为,我想知道是否有人能在这里帮忙。

我正在使用继承addAttribute方法的XhtmlTextWriter类创建一个表单。我正在创建一个input标记,它需要一个漂亮的(HTML5(占位符属性。addAttribute方法有两个参数:属性名称和值。属性名称可以从HtmlTextWriteAttribute枚举中拾取,也可以作为字符串手动输入。由于"占位符"在枚举中不可用,我使用了以下代码:

StringWriter sw = new StringWriter();
XhtmlTextWriter html = new XhtmlTextWriter(sw);
html.AddAttribute(HtmlTextWriterAttribute.Type, "text");
html.AddAttribute(HtmlTextWriterAttribute.Name, "firstname");
html.AddAttribute("placeholder", "First Name");
html.AddAttribute("maxlength", "25");
html.RenderBeginTag(HtmlTextWriterTag.Input);
html.RenderEndTag();//input
return sw.ToString();

这很好地创建了元素&指定了属性。。。占位符除外:

<input type="text" name="firstname" maxlength="25"></input>

有人知道我的占位符在哪里吗?(正如您在maxlength中看到的,使用字符串作为属性名称有效…(

注意:这确实有效,但不太好看:

html.WriteBeginTag("input"); 
html.WriteAttribute("type", "text");
html.WriteAttribute("placeholder", "First Name");
html.Write(HtmlTextWriter.SelfClosingTagEnd);

//更新:required属性存在相同问题。。。它可能是HTML5特定的东西吗?

这是因为您使用的是XhtmlTextWriter,它对属性非常严格,不会写出未识别的属性(因为需要生成有效的XHTML(。你有两个选择。

一:改用HtmlTextWriter

HtmlTextWriter html = new HtmlTextWriter(sw);

二:如果出于某种原因需要使用XhtmlTextWriter,可以在将属性添加到元素之前,将placeholder添加为input元素的已识别属性:

html.AddRecognizedAttribute("input", "placeholder");

相关内容

  • 没有找到相关文章

最新更新