在 MVC 中使用 Razor 时如何取消选中默认单选按钮?

Lij*_*raj 4 asp.net-mvc radio-button razorengine

我正在使用这样的单选按钮,

 <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>
Run Code Online (Sandbox Code Playgroud)

这里我有两个在页面中呈现的单选按钮,我希望呈现单选按钮并且没有任何单选按钮的默认选择,我该怎么做

我试过这样,但它不工作

 @Html.RadioButtonFor(x => x.gender, "Female", new { @checked = "true" })
Run Code Online (Sandbox Code Playgroud)

更新

public class student
    {             
        [DisplayName("Gender")]
        [Required(ErrorMessage = "please select gender")]
        public gender gender { get; set; }
    } 

public enum gender
    {
        male,
        female
    }
Run Code Online (Sandbox Code Playgroud)

And*_*rei 6

为确保默认情况下未选择任何内容,请将您的属性设为可空:

public gender? gender { get; set; }
Run Code Online (Sandbox Code Playgroud)

它的默认值为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
Run Code Online (Sandbox Code Playgroud)