我发现了一些奇怪的行为,我想知道是否有人可以在这里帮忙。
我使用继承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特有的吗?
答案 0 :(得分:3)
这是因为您正在使用XhtmlTextWriter
,它对其属性严格,并且不会写出无法识别的(由于需要生成有效的XHTML)。你有两个选择。
一::改为使用HtmlTextWriter
:
HtmlTextWriter html = new HtmlTextWriter(sw);
二:如果由于某种原因需要使用XhtmlTextWriter
,可以在添加属性之前添加placeholder
作为input
元素的已识别属性元素:
html.AddRecognizedAttribute("input", "placeholder");