如何在 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,我倾向于使用&lt;label&gt;@Html.RadioButtonFor(x =&gt; x.gender, gender.Female)&lt;span&gt;@gender.Female&lt;/span&gt;&lt;/label&gt;。或者,您需要@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伪静态?真诚求教。

MVC 和 Razor 中 Html.TextboxFor 和 Html.EditorFor 的区别

当前日期和时间 - MVC razor 中的默认值

如何在 Razor 页面中使用 MVC 部分视图和布局

如何更改 BigQuery 控制台(Web UI)中的默认选项,尤其是取消选中“使用旧版 SQL”?