带有动态单选按钮的其他html标签
本文关键字:其他 html 标签 单选按钮 动态 | 更新日期: 2023-09-27 17:58:47
我正在通过以下方式动态创建一些单选按钮:
Regions.ascx
<ul class="form_items" ID="radioList" runat="server" clientidmode="Static">
</ul>
在Regions.ascx.cs
foreach (var region in Config.ConfigString("str_Regions").Split(','))
{
HtmlGenericControl li = new HtmlGenericControl("li");
RadioButton regionRadio = new RadioButton();
regionRadio.Text = region;
regionRadio.ID = "Radio"+(i++).ToString();
regionRadio.Attributes.Add("name", "region");
regionRadio.Attributes.Add("value", region);
regionRadio.TextAlign = TextAlign.Right;
li.Controls.Add(regionRadio);
radioList.Controls.Add(li);
}
出现了很多额外的HTML标记,这是我不想要的。我得到的输出为:
<ul id="radioList" class="form_items">
<li>
<span name="region"><input id="MainContent_contactUs_Radio1" type="radio" name="ctl00$MainContent$contactUs$Radio1" value="Australia">
<label for="MainContent_contactUs_Radio1">Australia</label>
</span>
</li>
<li>
<span name="region"><input id="MainContent_contactUs_Radio2" type="radio" name="ctl00$MainContent$contactUs$Radio2" value="America">
<label for="MainContent_contactUs_Radio2">America</label>
</span>
</li>
</ul>
"澳大利亚/美国"的标签继承了与所有标签对齐的样式,从而导致外观错误。而我只想要
<ul id="radioList" class="form_items">
<li><input id="MainContent_contactUs_Radio1" type="radio" name="ctl00$MainContent$contactUs$Radio1" value="Australia">"Australia"</li><li><input id="MainContent_contactUs_Radio2" type="radio" name="ctl00$MainContent$contactUs$Radio2" value="America">"America"</li></ul>
如果您使用的是System.Web.UI.Webcontrols,它将使用span来呈现您的控件。您可以看到为什么它在跨度之间进行渲染。
为什么ASP.Net RadioButton和CheckBox在Span内渲染?
有两种方法可以克服这一点。首先,您需要将属性添加到当前未跨越的输入控件中。当您直接添加属性时,它将以这种方式执行。
查看我的博客文章-http://www.dotnetjalps.com/2014/04/aspnet-checkbox-button-attributes-javascript.html
您需要添加如下属性。
myCheckBox.InputAttributes.Add("onblur", "onBlur();");
对于文本对齐和其他内容,我建议您使用System.Web.UI.HtmlControls,在那里您可以使用HtmlInputRadioButton而不是System.Web.UI.Webcontrols 您可以做的另一件事是分别添加标签和HTMLInputRadioButton,并根据需要将类添加到标签中。 希望这对css样式的有更多的控制string[] regions = {"Autralia", "Asia", "US"};
foreach (var region in regions)
{
HtmlGenericControl li = new HtmlGenericControl("li");
HtmlInputRadioButton radioButton=new HtmlInputRadioButton
{Value = region,
Name = region};
li.Controls.Add(radioButton);
Label label=new Label {Text = region, CssClass = "YourCSSClass"};
li.Controls.Add(label);
radioList.Controls.Add(li);
}
我认为text-align设置了单选按钮在其容器中的水平位置。
因此,请检查您的容器是否包裹在单选按钮上。