单选按钮适用于多个bool

wog*_*les 1 asp.net asp.net-mvc

假设我的模型中有以下属性,我想要互相排斥:

public bool PrintWeek1 {get; set;}
public bool PrintWeek2 {get; set;}
public bool PrintWeek3 {get; set;} 
Run Code Online (Sandbox Code Playgroud)

是否可以将它们渲染为一组单选按钮,还是需要将它们更改为枚举?

如果我使用@Html.RadioButtonFor它,则将name作为属性的名称,以便它们不能正确分组.

ram*_*ilu 5

这是一个快速的解决方案,让你在模型中有以下属性 -

public bool PrintWeek1 { get; set; }
public bool PrintWeek2 { get; set; }
public bool PrintWeek3 { get; set; }
public string SelectedValue { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后你的HTML应该是这样的 -

@Html.RadioButtonFor(Model => Model.PrintWeek1, "PrintWeek1", new { @Name = "SelectedValue" }) 
@Html.RadioButtonFor(Model => Model.PrintWeek2, "PrintWeek2", new { @Name = "SelectedValue" }) 
@Html.RadioButtonFor(Model => Model.PrintWeek3, "PrintWeek3", new { @Name = "SelectedValue" })
Run Code Online (Sandbox Code Playgroud)

然后,当您提交表单时,您将获得SelectedValue属性中的选定值.

编辑 地址@StephenMuecke点,创建了以下解决方案 -

创建一个enum-

public enum PrintWeekType
{
    PrintWeek1, PrintWeek2, PrintWeek3
}
Run Code Online (Sandbox Code Playgroud)

然后有一个模型属性(而不是单个属性,具有单个emum属性) -

public PrintWeekType SelectedValue { get; set; }
Run Code Online (Sandbox Code Playgroud)

HTML应如下所示 -

@Html.RadioButtonFor(m => m.SelectedValue, PrintWeekType.PrintWeek1) 
@Html.RadioButtonFor(m => m.SelectedValue, PrintWeekType.PrintWeek2) 
@Html.RadioButtonFor(m => m.SelectedValue, PrintWeekType.PrintWeek3)
Run Code Online (Sandbox Code Playgroud)

使用上面的示例,可以预先选择一个单选按钮,同时我们可以在SelectedValue属性中发布所选的值.