0

我从一家设计机构收到了以下 html,将在其中一个 asp.net webapps 上以表单的形式显示:

<label>
    <input type="radio" />
    Label Text 1
</label>

<label>
    <input type="radio" />
    Label Text 2
</label>

<label>
    <input type="radio" />
    Label Text 3
</label>

您可以想象生成的输出会将单选按钮放置在标签文本的左侧。

由于标签/单选按钮的数量是可变的,我决定使用 RadioButtonList 来动态操作添加的控件数量。

RadioButtonList 的问题在于它生成的 html 不是很灵活。我最接近客户想要的布局是以下代码。但这会将单选按钮放在标签的右侧。:(

    <asp:RadioButtonList ID="DayOfWeekRadioButtonList" runat="server" RepeatLayout="Flow" RepeatDirection="Vertical" TextAlign="Left">
    </asp:RadioButtonList>

这是生成的 HTML:

<label for="ControlID1">Text 1</label>
<input id="RadioControlID1" type="radio" name="NameRadioControlID1" value="Text 1" />

<label for="ControlID2">Text 2</label>
<input id="RadioControlID2" type="radio" name="NameRadioControlID2" value="Text 2" />

<label for="ControlID3">Text 3</label>
<input id="RadioControlID3" type="radio" name="NameRadioControlID3" value="Text 3" />

是否可以将输入控件放置在标签内?

4

2 回答 2

1

您将无法让 RadioButtonList 控件按照您的描述呈现标签内的按钮,而无需制作自定义控件来覆盖该行为。

正如 womp 所提到的,您需要设置 TextAlign="Right" 而不是“Left”,或者如果您将该属性留空,它应该默认为预期的行为。将其设置为“右”意味着“将文本对齐到单选按钮的右侧”。“左”则相反。

您可以使用常规标签和 RadioButton 控件来获得所需的输出,而不是制作自定义控件,但您需要关联一个 GroupName 并单独检查每个按钮。这可以通过将它们放在面板控件中然后循环它们并确定选择哪个来增强。

它是更多标记,但它与您提到的格式相匹配:

<label>
  <asp:RadioButton ID="rbMonday" runat="server" GroupName="DaysOfWeek" />
  Monday
</label>

但坦率地说,标记并不重要,因为它不提供任何额外的功能。最终,您想要捕获输入,标签是否包含单选按钮不会影响该目标。如果您正在处理的代理机构对此很灵活,您可以解释不同的选项,也许他们会接受默认格式,这可以提高您的工作效率并让您在这方面花费更少的时间(反过来,这应该使他们更快乐)。

于 2009-09-06T19:23:01.913 回答
0

您的TextAlign属性设置为“Left”,这意味着文本位于按钮的左侧。我相信将它设置为TextAlign = "Right"应该做你想做的事。

于 2009-09-06T18:59:12.510 回答