如果值设置为0,则默认选中Mvc Razor RadioButtonFor

时间:2016-05-18 14:17:54

标签: asp.net-mvc razor

之前有没有人经历过这种情况,背后有什么原因?

@Html.RadioButtonFor(m => m.SelectedWishlistId, 0, new { id = "newWishlist" })

上述行优先于

@Html.RadioButtonFor(m => m.SelectedWishlistId, wishlist.Id, new { @checked = "checked"}) 

即使未设置checked属性。

1 个答案:

答案 0 :(得分:1)

@Html.RadioButtonFor(x => x.Id, value)

如果x.Id等于value,即使未指定此属性,也会设置checked属性。这是因为RadioButtonHelper有自己的自定义检查:

isChecked = model != null &&
    !String.IsNullOrEmpty(name) &&
    String.Equals(model.ToString(), valueString, StringComparison.OrdinalIgnoreCase);

然后:

if (isChecked)
{
    tagBuilder.MergeAttribute("checked", "checked");
}

InputExtensions.cs