我试图在剃刀语法单选按钮列表到目前为止,我想出这个
@foreach (var p in Model)
{
<div id="projectList" class="col-lg-5">
@Html.RadioButton("name", "1", false, new { onCLick = "ShowOption(this)", id = p.id.ToString() })
@Html.Label(p.id.ToString(), p.name)
</div>
}
但标签未与单选按钮关联。
你foreach
回路不产生for
属性的标签(如果你从new { id = p.id.ToString() }
方法去除RadioButton
,没有id
属性将被添加或者尽管它是默认行为,这样做。
不添加属性的原因,当你的模型是IEnumerable<T>
是符合HTML-4标准,其中指出
ID标记必须以字母开头([A-ZA-Z])
HtmlHelpers
基于所述id
属性的属性name
但以下划线替换和[
,]
和.
字符以防止与jQuery
选择冲突(例如.
在id
属性将被解释为一个类名称选择器)。在你的情况name
是集合中的第一项name="[0].Name"
,但因为这将意味着产生id="_0__Name"
(在HTML-4无效),在HtmlHelper
只是省略了id
(并在label
的for
属性的情况下。
解决这方面的一个简单的方法是只包装在<label>
元件的单选按钮
<label>
@Html.RadioButton("name", "1", false)
<span>@p.name</span>
</label>
另一种选择是在生成的id
属性RadioButton()
并且还生成在标签的匹配for
属性
@Html.RadioButton("name", "1", false, new { onclick = "ShowOption(this)", id = p.id })
@Html.Label(p.name, new { @for = p.id})
附注:我建议你使用强类型qazxsw POI和POI qazxsw方法。
寻找这一行@ Html.Label( “一些标签”,htmlAttributes:新{的onclick = “ShowOption(” someID “);” ID = “someID”})
RadioButtonFor()