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选择所需的单选按钮选项.
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没有的="",但这也没关系.看,它不是被识别的值,它是属性本身,所以这就是检查第二个的原因.