MVC Razor RadioButtonFor:如何没有预设@checked?

时间:2015-05-26 19:05:44

标签: asp.net-mvc razor checked radiobuttonfor

@for (var b = 0; b < 11; b++)
  {
    @Html.RadioButtonFor(model => Model.LikelyToReturn, @b, new { @checked = false })
  }

如果我遗漏

new { @checked = false }

然后默认选中第一个单选按钮。如果我包含它,默认情况下会检查最后一个。默认情况下我怎样才能检查它们?

编辑后:

这是模型:

public class PatientSatisfactionSurveyPage : Page
{
   //non important stuff removed
   public int LikelyToReturn { get; set; }
   public PatientSatisfactionSurveyPage() { }
}

2 个答案:

答案 0 :(得分:1)

整数的默认值为0,因此它总是选择第一个值为0的值。要获得结果,必须设置Model.LikelyToReturn可以为空。

public class yourClassName
{
    public int? LikelyToReturn { get; set; }
}

答案 1 :(得分:1)

我能够通过自己的测试重现这一点。

选择最后一个单选按钮的原因是因为checked = falsechecked属性的存在意味着应该检查单选按钮。您可以使用checked = "casey-is-awesome!"之类的内容,然后选择组中的一个单选按钮。

如果您不想选择任何按钮,则只需完全省略checked属性即可。如果您仍然遇到问题,请发布您的模型和任何相关的控制器代码。

修改

更改

public int LikelyToReturn { get; set; }

public int? LikelyToReturn { get; set; }

int的默认值为0.由于0被用作第一个单选按钮的值,因此ASP.NET MVC框架会自动将其标记为已选中,因为该值与模型中的值匹配。通过切换到可为空的int,默认值将为null,因此框架不会自动将其标记为选中