如何在 MVC 中使用 Razor 时取消选中默认单选按钮?
Posted
技术标签:
【中文标题】如何在 MVC 中使用 Razor 时取消选中默认单选按钮?【英文标题】:How to make the default radio button to be unchecked while using Razor in MVC? 【发布时间】:2018-06-27 15:14:58 【问题描述】:我正在使用这样的单选按钮,
<div class="form-group">
@html.LabelFor(x => x.gender)
<div class="form-check">
<label class="form-check-label">
@Html.RadioButtonFor(x => x.gender, "Male")
Male
</label>
</div>
<div class="form-check">
<label class="form-check-label">
@Html.RadioButtonFor(x => x.gender, "Female")
Female
</label>
</div>
</div>
这里我有两个在页面中呈现的单选按钮,我希望呈现单选按钮并且没有默认选择任何单选按钮,我该怎么做
我试过这样但它不起作用
@Html.RadioButtonFor(x => x.gender, "Female", new @checked = "true" )
更新
public class student
[DisplayName("Gender")]
[Required(ErrorMessage = "please select gender")]
public gender gender get; set;
public enum gender
male,
female
【问题讨论】:
你的模型的“x.gender”属性是什么类型的? 嗨,请查看更新后的问题,谢谢 【参考方案1】:试试这个;
@Html.RadioButtonFor(x => x.gender, "Female")
【讨论】:
【参考方案2】:为确保默认情况下未选择任何内容,请将您的属性设为可为空:
public gender? gender get; set;
其默认值为null
,这将确保未选择任何内容,但一旦用户发布表单,Required
属性将不允许null
作为有效值。
另外,您现在正在使用字符串作为值,我不确定这是否适用于枚举。最好按照以下方式做一些事情:
@Html.RadioButtonFor(x => x.gender, gender.Female)
@Html.Label(gender.Female.ToString())
// Or you can stick to literals for labels as you do now.
// This however allows you to eventually turn this rendering code into a loop
【讨论】:
当我这样做时,我得到一个这样的错误,传入字典的模型项是空的,但是这个字典需要一个非空类型的模型项 在 .cshtml 页面上 @LijinJohn,当然。 “where”通常表示“在哪一行” 请注意@Html.Label(gender.Female.ToString())
不会创建与按钮关联的标签 - 点击它不会设置焦点,应使用new id = ""
删除单选按钮中重复的id
属性
@Andrei,我倾向于使用<label>@Html.RadioButtonFor(x => x.gender, gender.Female)<span>@gender.Female</span></label>
。或者,您需要@Html.Label("", gender.Female.ToString(), new for = gender.Female )
之类的东西并将new id = gender.Female
添加到单选按钮(这只是RadioButtonFor()
方法生成重复id
属性的不幸问题)以上是关于如何在 MVC 中使用 Razor 时取消选中默认单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Razor 时如何在每个请求处传输 JWT 令牌(.NET CORE 2.2 MVC)
Asp.net MVC3.0用Razor视图如何实现URL伪静态?真诚求教。