gpt4 book ai didi

c# - 如何从代码隐藏中添加无值(value)的 HTML5 属性

转载 作者:行者123 更新时间:2023-11-30 21:58:47 24 4
gpt4 key购买 nike

这是这个问题的后续:How to add <audio> tag to Content of Page in Code behind?

我在这里创建一个像这样的 audio 控件。

var myAudio = new System.Web.UI.HtmlControls.HtmlAudio();
myAudio.Attributes.Add("autoplay", "autoplay");
myAudio.Attributes.Add("controls", "controls");
myAudio.Src = "test.mp3";
Form.Controls.Add(myAudio);

这在页面中呈现为

<audio src="test.mp3" autoplay="autoplay" controls="controls"></audio>

它有效。但理想情况下,我希望将其呈现为

<audio src="test.mp3" autoplay controls></audio>

也就是说,作为一个无值属性,只有键 autoplaycontrols

我试过了

myAudio.Attributes.Add("autoplay", ""); //autoplay = "";
myAudio.Attributes.Add("autoplay", null); //autoplay attribute missing

但是这些并没有产生任何令人满意的结果。

有没有办法用没有值(value)的属性来呈现控件?

最佳答案

一个可能的解决方案是覆盖继承控件上的 RenderAttributes 方法。

public class MyCustomAudio : System.Web.UI.HtmlControls.HtmlAudio
{
protected override void RenderAttributes(HtmlTextWriter writer)
{
foreach (string key in this.Attributes.Keys)
{
String val = this.Attributes[key];
writer.Write(val == key
? String.Format(" {0}", key)
: String.Format(" {0}=\"{1}\"", key, val));
}
}
}

使用相同的代码:

var myAudio = new MyCustomAudio();
myAudio.Attributes.Add("autoplay", "autoplay");
myAudio.Attributes.Add("controls", "controls");
myAudio.Src = "test.mp3";
Form.Controls.Add(myAudio);

我得到了这个输出:

<audio autoplay controls src="test.mp3"></audio>

关于c# - 如何从代码隐藏中添加无值(value)的 HTML5 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com