Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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# 带有动态单选按钮的附加html标记_C#_Asp.net_Css_Radio Button_Asp.net Controls - Fatal编程技术网

C# 带有动态单选按钮的附加html标记

C# 带有动态单选按钮的附加html标记,c#,asp.net,css,radio-button,asp.net-controls,C#,Asp.net,Css,Radio Button,Asp.net Controls,我通过以下方式动态创建一些单选按钮: Regions.ascx <ul class="form_items" ID="radioList" runat="server" clientidmode="Static"> </ul> 很多额外的HTML标签出现了,这是我不想要的。我得到的输出是: <ul id="radioList" class="form_items"> <li> <span name="re

我通过以下方式动态创建一些单选按钮:

Regions.ascx

<ul class="form_items" ID="radioList" runat="server" clientidmode="Static">    
    </ul>
很多额外的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>
  • 澳大利亚
  • 美国
“Australia/America”的标签继承了与所有标签对齐的样式,从而导致外观错误。 而我只是想

<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.WebControl,它将使用span呈现您的控件。您可以看到为什么它的渲染在跨度之间

有两种方法可以克服这个问题。首先,当您直接添加属性时,您需要将属性添加到输入控件中,而不是现在就跨

请参阅我的博客文章-

您需要添加如下所示的属性

myCheckBox.InputAttributes.Add("onblur", "onBlur();");
对于文本对齐和其他内容,我建议您使用System.Web.UI.HtmlControls,您可以使用HtmlInputRadioButton而不是System.Web.UI.Webcontrols单选按钮。在这里,您还可以非常轻松地管理所有HTML属性

另外,您可以分别添加标签和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样式的控件

感谢您的详细回答。我的主要问题实际上是单选按钮的默认标签。我可以使用HTML控件的单选按钮,如果所有的处理方法都保持不变。我用了整整一天的时间来实现它,我不想在这里玩太多,因为我在这里没有太多经验。是的,单选按钮的处理将保持不变,另一件事是你也可以使用asp.net radiobutton的样式表来解决你的问题。请看我的答案,我已经修改了它。
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);
        }