RadioButtonFor中的默认选择

San*_*San 4 .net html c# asp.net asp.net-mvc-3

我正在生成radiobutton列表,然后尝试在加载时选择一个选项,如下所示.

在视图中的Foreach循环

@foreach (var myListItem in Model.MyList)
 {
    @Html.RadioButtonFor(m => m.MyType,myListItem.MyType, new {id = myListItem.MyType, @Checked = (Model.MyTypeId == myListItem.MyTypeId) })
    @myListItem.MyType
 }
Run Code Online (Sandbox Code Playgroud)

尽管HTML生成正确(参见下文).即使是,也会检查第二个选项而不是第一个选项Model.MyTypeId = 0.

生成的HTML视图

<input id="0" name="MyType" value="Option One" CHECKED="True" type="radio">Option One
<input id="1" name="MyType" value="Option Two  " CHECKED="False" type="radio">Option Two    
Run Code Online (Sandbox Code Playgroud)

请建议我如何通过deafult选择所需的单选按钮选项.

Mik*_*oud 5

HTML实际上并不正确.你需要在这些方面做更多的事情:

@foreach (var myListItem in Model.MyList)
{
    if (Model.MyTypeId == myListItem.MyTypeId)
    {
        @Html.RadioButtonFor(m => m.MyType,myListItem.MyType,
            new
            {
                id = myListItem.MyType,
                @Checked = ""
            })
    }
    else
    {
        @Html.RadioButtonFor(m => m.MyType,myListItem.MyType,
            new
            {
                id = myListItem.MyType,
            })
    }
    @myListItem.MyType
}
Run Code Online (Sandbox Code Playgroud)

虽然我无法验证确切的输出,但它看起来应该是这样的:

<input id="0" name="MyType" value="Option One" CHECKED type="radio">
Run Code Online (Sandbox Code Playgroud)

您可能必须使用null它来生成CHECKED没有的="",但这也没关系.看,它不是被识别的,它是属性本身,所以这就是检查第二个的原因.