如何在C#中为HtmlGenericControl动态添加download下载属性?
解决HtmlGenericControl添加download属性不生效的问题
你碰到的问题其实是ASP.NET处理HTML属性的小细节导致的:当你给Attributes.Add传入null作为属性值时,ASP.NET会直接忽略这个属性,不会把它渲染到页面上。而你想要的是HTML里的布尔属性形式(也就是只写属性名、不带值的<a download>),这时候得换个方式设置。
正确的写法
把null换成string.Empty(空字符串)就行,代码修改如下:
HtmlGenericControl a = new HtmlGenericControl("a"); a.Attributes.Add("href", ds2.Tables[0].Rows[i][2].ToString()); // 用空字符串代替null a.Attributes.Add("download", string.Empty); a.InnerHtml = ds2.Tables[0].Rows[i][1].ToString();
为什么这样可行?
HTML中的布尔属性(比如download、checked、disabled)只要存在这个属性,浏览器就会识别为启用状态,不管它有没有值。ASP.NET的HtmlGenericControl在处理属性时:
- 如果属性值是
null:不会输出该属性 - 如果属性值是空字符串:会输出属性名但不带值,正好符合你要的
<a href="somthing" download>download</a>效果
另外,你也可以用属性索引的方式设置,效果是一样的:
a.Attributes["download"] = string.Empty;
内容的提问来源于stack exchange,提问作者Saeed Areffard
相关产品推荐
相关产品推荐

