我正在尝试处理ASP MVC 5中的单选按钮ID
我正在这样工作
示例模型
class A
{
public bool? radio { get; set; }
}
并在剃刀视图中
@Html.RadioButtonFor(x => x.NeutroBT, Model.NeutroBT, new { @id = "True"})
@Html.RadioButtonFor(x => x.NeutroBT, !Model.NeutroBT, new { @id = "False})
这不会造成问题,但是我正在使用一个编辑器模板,并且我希望它已生成id
,以便通过诸如@Html.IdFor(x => x.NeutroBT, true)
和@Html.IdFor(x => x.NeutroBT, false)
之类的方式进行访问其他观点,只是防止将来发生变化
像这样可能吗?我花了很多时间进行搜索,但没有得到类似的结果
如果不可能,最好的处理方法是什么?
谢谢!
答案 0 :(得分:2)
无需使用id
属性。相反,您可以只使用name
属性通过javascript选择或设置值(在任何情况下,@Html.IdFor() will only ever return
NeutroBT , not the
id that you override in the
RadioButtonFor()`方法无法用于您的情况)
此外,RadioButtonFor()
的第二个参数应为true
或false
(而不是Model.NeutroBT
和!Model.NeutroBT
)。
要使标签与按钮相关联,您可以将其包装在<label>
中,例如
<label>
@Html.RadioButtonFor(x => x.NeutroBT, true, new { id = ""})
<span>Yes</span>
</label>
<label>
@Html.RadioButtonFor(x => x.NeutroBT, false, new { id = ""})
<span>No</span>
</label>
请注意,new { id = "" }
会删除id
属性,并防止由于重复的id
属性而导致无效的html。
然后使用jQuery访问所选值
var selectedValue = $('input[name="' + @Html.NameFor(x => x.NeutroBT) + '"]:checked').val();