gpt4 book ai didi

c# - MVC RadiobuttonFor Razor 如何使标签可点击?

转载 作者:行者123 更新时间:2023-11-30 12:41:51 30 4
gpt4 key购买 nike

到目前为止,我正在尝试用 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>
}

但标签没有与单选按钮相关联。

最佳答案

你的 foreach循环不生成 for标签的属性(如果您从 new { id = p.id.ToString() } 方法中删除了 RadioButton,则不会添加 id 属性,尽管这是默认行为。

当您的模型为 IEnumerable<T> 时未添加属性的原因是为了遵守 HTML-4 标准,该标准声明

ID tokens must begin with a letter ([A-Za-z])

HtmlHelpers生成 id基于 name 的属性属性但替换和 [ , ].带有下划线的字符以防止与 jQuery 发生冲突选择器(例如 . 属性中的 id 将被解释为类名选择器)。在你的情况下 namename="[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})

旁注:我建议您使用强类型 RadioButtonFor()LabelFor()方法。

关于c# - MVC RadiobuttonFor Razor 如何使标签可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36150145/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com