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

MVC Razor RadioButtonFor: How to have NO preset @checked?

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

如果我遗漏了

new { @checked = false }

然后默认选中第一个单选按钮。如果我包含它,则默认情况下会选中最后一个。默认情况下,我将如何检查其中的 NONE 个?

编辑后:

这是型号:

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

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

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

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

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

如果您不想选择任何按钮,则只需完全忽略选中的属性即可。如果您仍有问题,请 post 您的模型和任何相关的控制器代码。

编辑

改变

public int LikelyToReturn { get; set; }

public int? LikelyToReturn { get; set; }.

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