带有动态单选按钮的其他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>

带有动态单选按钮的其他html标签

如果您使用的是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,并根据需要将类添加到标签中。

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);
        }

希望这对css样式的有更多的控制

我认为text-align设置了单选按钮在其容器中的水平位置。

因此,请检查您的容器是否包裹在单选按钮上。