AspNet核心MVC 1.1.3默认选择单选按钮

时间:2017-06-07 14:14:30

标签: asp.net-mvc razor asp.net-core-mvc core

我正在尝试默认一个单选按钮进行检查。

<div>@Html.RadioButtonFor(m => m.IsActive, "OofDeactive", new { @class = "isActive", @checked="checked"})</div>
<div>@Html.RadioButtonFor(m => m.IsActive, "OofActive", new { @class = "isActive" })</div>

请注意,模型包含属性

public bool IsActive { get; set; }

我在这里找到了同样的问题,但对于MVC6虽然已经关闭了:https://github.com/aspnet/Mvc/issues/3098

这是一个问题还是我做错了什么?

2 个答案:

答案 0 :(得分:1)

RadioButtonFor()(与所有HtmlHelper方法一样)通过绑定到您的属性的值及其确定选中哪个单选按钮的值来工作。

您的IsActive属性为bool,其中只有2个可能的值,truefalse,并且无法绑定到string且值为&#34 ; OofDeactive&#34;或者&#34; OofActive&#34;。将代码更改为

@Html.RadioButtonFor(m => m.IsActive, true, new { @class = "isActive", id = "" })
@Html.RadioButtonFor(m => m.IsActive, false, new { @class = "isActive", id = "" })

如果属性IsActive的值为true,则会选择第一个单选按钮,否则第二个单选按钮将被选中。

请注意,RadioButtonFor()方法会生成重复的id属性,因此请使用new { id = "" }删除id属性(或者在需要时为其提供唯一的id出于其他目的)。设置checked属性是没有意义的,因为它将被忽略。

答案 1 :(得分:0)

你能试试吗?

 @{
    var checked = Model.IsActive ? new {@checked = "checked"} : null;
var checked1 = checked == null ? new {@checked = "checked"} : null;
    }

          <div>@Html.RadioButtonFor(m => m.IsActive, "OofDeactive", checked)</div>
            <div>@Html.RadioButtonFor(m => m.IsActive, "OofActive", checked1)</div>