如何为布尔值创建编辑器模板?(.编者<>)



我正在尝试使用以下代码来定义boolean.cshtml以与editor一起使用:

@{
   var o = ViewData.ModelMetadata;
}
<div class="editor-for">
    @Html.CheckBox(o.PropertyName,
                   ViewData.Model,
                   new { @class="tickbox-single-line" })
</div>

不幸的是,模型为null,我会收到以下非描述性错误:

CS1973:'System.Web.MVC.HTMLHELPER'没有名为"复选框"的适用方法,但似乎使用该名称具有扩展方法。扩展方法不能动态调度。考虑在没有扩展方法语法的情况下施放动态参数或调用扩展方法。

阅读本文后,我尝试了以下内容:

@Html.CheckBox(o.PropertyName,
               ViewData.Model ?? false,
               new { @class="tickbox-single-line" })

,但我遇到的错误完全相同。视图代码简单:

@Html.EditorFor(m => m.RememberMe)

我在boolean.cshtml中做错了什么?

不确定这是最好的方法,但是我认为您对ViewData.Model有问题,即(如果我没错),这是动态的有问题的事情。

所以...铸造!

@{
   var o = ViewData.ModelMetadata;
   bool model = (bool)ViewData.Model;
}
<div class="editor-for">
    @Html.CheckBox(o.PropertyName,
                   model,
                   new { @class="tickbox-single-line" })
</div>

但是,如果我没有错,则EditorTemplate宁愿看起来像

@model bool
<div class="editor-for">
   @Html.CheckBox("", Model, new{@class="tickbox-single-line"})
<div>

这有点晚,但是您也可以使用Checkboxfor来简化它。

我的EditorTemplate简称:

@model bool
@Html.CheckBoxFor(m => m)

相关内容

最新更新