Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么XhtmlTextWriter会忽略自定义属性?_C#_Asp.net_Html_Htmltextwriter - Fatal编程技术网

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

C# 为什么XhtmlTextWriter会忽略自定义属性?,c#,asp.net,html,htmltextwriter,C#,Asp.net,Html,Htmltextwriter,我发现了一些奇怪的行为,我想知道这里是否有人能帮忙 我正在使用继承addAttribute方法的XhtmlTextWriter类创建一个表单。我正在创建一个input标记,它需要一个漂亮的(HTML5)占位符属性。addAttribute方法有两个参数:属性名称和值。属性名称可以从HtmlTextWriteAttributeenum中选取,也可以作为字符串手动输入。由于“占位符”在枚举中不可用,我使用了以下代码: StringWriter sw = new StringWriter(); Xht

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

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

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>

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

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

One:改用
htmltextwitter

HtmlTextWriter html = new HtmlTextWriter(sw);
2:如果出于某种原因需要使用
XhtmlTextWriter
,可以在将属性添加到元素之前,将
占位符
添加为
输入
元素的可识别属性:

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

啊哈,听起来很合理。我想遵守HTML5。MSDN在XHTML-ltextwriter页面上说,“除非您专门将ASP.NET配置为不呈现XHTML标记,否则htmltexwriter将输出XHTML”,因此我倾向于您的第一个解决方案。你推荐什么?(我明天会检查我的代码,到时候你会得到你的对号)
html.AddRecognizedAttribute("input", "placeholder");