为什么XhtmlTextWriter会忽略自定义属性?

时间:2014-05-21 19:37:32

标签: c# asp.net html5 htmltextwriter

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

我使用继承addAttribute方法的XhtmlTextWriter类创建表单。我正在创建一个需要一个不错的(HTML5)占位符属性的input标记。 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();

这很好地创造了元素&指定的属性...占位符的EXCEPT:

<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特有的吗?

1 个答案:

答案 0 :(得分:3)

这是因为您正在使用XhtmlTextWriter,它对其属性严格,并且不会写出无法识别的(由于需要生成有效的XHTML)。你有两个选择。

一::改为使用HtmlTextWriter

HtmlTextWriter html = new HtmlTextWriter(sw);

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

html.AddRecognizedAttribute("input", "placeholder");
相关问题