3

我有一个类的剑道网格,我为该类构建了一个编辑器模板来为其中一个字段生成一个单选按钮。

这个单选按钮不反映属性的值,并且总是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>
4

1 回答 1

3

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

true => True
false => False

您是否尝试检查以 HTML 呈现的元素?您会看到boolvalue 转换为 capitalize string。为了克服这个问题,您也应该更改truefalse在单选按钮中输入类型string

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

<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>
于 2015-05-21T08:47:52.090 回答