繁体   English   中英

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

[英]How to create an Editor Template for Boolean? (.EditorFor<>)

我正在尝试使用以下代码定义一个Boolean.cshtml以与EditorFor一起使用:

@{
   var o = ViewData.ModelMetadata;
}

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

不幸的是,Model为null,我得到以下非描述性错误:

CS1973:'System.Web.Mvc.HtmlHelper'没有名为'CheckBox'的适用方法,但似乎有一个名称的扩展方法。 无法动态分派扩展方法。 考虑转换动态参数或调用扩展方法而不使用扩展方法语法。

看完之后我尝试了以下内容:

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

但我得到完全相同的错误。 View代码很简单:

@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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM