Nic*_*las 5 c# html-helper razor asp.net-mvc-5
我正在尝试用 razor 语法制作一个单选按钮列表,到目前为止我已经想出了这个
@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>
}
Run Code Online (Sandbox Code Playgroud)
但标签不与单选按钮关联。
小智 2
您的foreach
循环不会for
为标签生成属性(如果您new { id = p.id.ToString() }
从RadioButton
方法中删除,id
则不会添加任何属性,尽管这是默认行为。
当您的模型添加属性时,不添加属性的原因是IEnumerable<T>
为了遵守 HTML-4 标准,该标准规定:
ID 令牌必须以字母 ([A-Za-z]) 开头
HtmlHelpers
根据属性生成id
属性name
,但用下划线替换 和[
,]
和.
字符,以防止与选择器冲突jQuery
(例如,属性.
中的aid
将被解释为类名选择器)。在您的情况下,name
是name="[0].Name"
集合中的第一项,但因为这意味着生成id="_0__Name"
(在 HTML-4 中无效),所以HtmlHelper
仅省略id
( 在 a 的情况下label
,for
属性。
解决此问题的一个简单方法是将单选按钮包装在<label>
元素中
<label>
@Html.RadioButton("name", "1", false)
<span>@p.name</span>
</label>
Run Code Online (Sandbox Code Playgroud)
另一种选择是生成id
属性RadioButton()
并for
在标签中生成匹配属性
@Html.RadioButton("name", "1", false, new { onclick = "ShowOption(this)", id = p.id })
@Html.Label(p.name, new { @for = p.id})
Run Code Online (Sandbox Code Playgroud)
旁注:我建议您使用强类型RadioButtonFor()
和LabelFor()
方法。
归档时间: |
|
查看次数: |
3154 次 |
最近记录: |