有没有一种简单的方法来创建按钮列表并设置所选值?

时间:2012-03-14 12:44:25

标签: asp.net-mvc

目前我正在创建两个按钮并以这种方式设置所选值:

@if (Model.Test_Emne == null)
{
    @Html.RadioButtonFor(x => x.Test_Emne, 1) <span>Ja</span>
    <br />
    @Html.RadioButtonFor(x => x.Test_Emne, 0) <span>Nej</span>

}

@if (Model.Test_Emne == true)
{
    @Html.RadioButtonFor(x => x.Test_Emne, 1, new { @checked = "checked" }) <span>Ja</span>
    <br />
    @Html.RadioButtonFor(x => x.Test_Emne, 0) <span>Nej</span>
} else if (Model.Test_Emne == false)
{
    @Html.RadioButtonFor(x => x.Test_Emne, 1) <span>Ja</span>
    <br />
    @Html.RadioButtonFor(x => x.Test_Emne, 0, new { @checked = "checked" }) <span>Nej</span>
}

我的页面上有很多单选按钮,所以我正在寻找一种方法来减少代码。

我也看到了:

Has anyone implement RadioButtonListFor<T> for ASP.NET MVC?
http://jonlanceley.blogspot.com/2011/06/mvc3-radiobuttonlist-helper.html

这是唯一的选择吗?

1 个答案:

答案 0 :(得分:2)

以下似乎是实现相同目标的更短途径:

@Html.RadioButtonFor(x => x.Test_Emne, true) <span>Ja</span>
<br />
@Html.RadioButtonFor(x => x.Test_Emne, false) <span>Nej</span>

渲染视图时可能出现的情况:

  • Test_Emne = null =&gt;没有检查任何无线电
  • Test_Emne = true =&gt;检查第一台收音机
  • Test_Emne = false =&gt;检查第二台收音机

回发时可能出现的情况:

  • 如果未检查任何无线电,则Test_Emne属性将设置为null
  • 如果选中第一个广播,则Test_Emne属性将设置为true
  • 如果选中第二个广播,则Test_Emne属性将设置为false

更新:

这可以扩展到任何属性和任意数量的单选按钮。例如:

public string Foo { get; set; }

然后:

@Html.RadioButtonFor(x => x.Foo, "value1") <span>Foo 1</span>
@Html.RadioButtonFor(x => x.Foo, "value2") <span>Foo 2</span>
@Html.RadioButtonFor(x => x.Foo, "value3") <span>Foo 3</span>
@Html.RadioButtonFor(x => x.Foo, "value4") <span>Foo 4</span>
...

然后根据Foo属性的值,将选择相应的单选按钮。例如,如果您设置model.Foo = "value3";,则将预先选择第三个无线电。