单选按钮不反映模型的价值

Radio Button doesn't reflect Model's value

我有一个 kendo 网格用于 class,为此 class 我构建了一个编辑器模板来为其中一个字段生成单选按钮。

此单选按钮不反映属性的值,它始终是 false,尽管我通过在表单上打印它来检查该值,并且我确定它是 true。如果我为该字段设置默认值,单选按钮将反映该值,而不管该字段的实际值。

我应该注意到,我正在使用客户端模板来显示该字段的文本,并且工作正常。

这是网格:

    @(Html.Kendo().Grid<Class>()
        .Name("Grid")
        .Columns(columns =>
        {
            columns.Bound(x => x.BActive).ClientTemplate("#= BActive ? 'Open':'Close' #");
/// removed for brevity
        })
        .Editable(editable => editable.Mode(GridEditMode.PopUp))
        .DataSource(ds => ds.Ajax()
            .Model(model => {
                model.Id(x => x.SWhCode);
                model.Field(x => x.BActive).DefaultValue(true);
            })
        )
    )

这是在 editorTemplate 中生成单选按钮的行:

<label>
   @Html.RadioButtonFor(x => x.BActive, true, new { @class = "radio-inline" }) Open
</label>
<label>
   @Html.RadioButtonFor(x => x.BActive, false, new { @class = "radio-inline" }) Close
</label>

bool 类型将在客户端中像这样呈现

true => True
false => False

您是否尝试检查在 HTML 中呈现的元素?您会看到 bool 值转换为大写 string。要克服这个问题,您也应该在类型为 string 的单选按钮中更改 truefalse

你的视图代码应该是这样的

<label>
   @Html.RadioButtonFor(x => x.BActive, "true", new { @class = "radio-inline" }) Open
</label>
<label>
   @Html.RadioButtonFor(x => x.BActive, "false", new { @class = "radio-inline" }) Close
</label>