如何在MVC Core中的模型类中基于属性类型创建自定义控件

时间:2019-04-04 01:58:29

标签: asp.net-core-mvc

我正在创建MVC Web应用程序,我想在将Property定义为Bool时像这样:

 public bool? Active { get; set; } 

然后在视图中,将生成包括特定css类“ form-check-input”的复选框,并用Div将其包围,如下所示:

<div class="form-check">
            <input class="form-check-input" type="checkbox" id="Active">
            <label class="form-check-label" for="Active">
                Check me out
            </label>
</div>

在这种情况下,如果我在模型中具有Bool类型的多个属性,则该html应该自动生成! 我提供了bool类型作为示例! 有没有提示或您可以提供任何示例?

1 个答案:

答案 0 :(得分:0)

要使用Mvc Core生成单个复选框,只需使用input-tag-helper。您需要在模型上定义一个Boolean属性(或在使用Razor Pages的情况下为PageModel),然后将其传递给asp-for属性,只要该属性不可为空即可:

public bool Active { get; set; } 

并在您看来:

<input asp-for="Active" />

您可能已经知道,传递给asp-for属性的属性名称用于id和name属性的值。生成的HTML将包含Active属性的两个字段:

<input type="checkbox" data-val="true" data-val-required="The Active field is  required." id="Active" name="Active" value="true">
<input name="Active" type="hidden" value="false">

但是,如果您要生成多个复选框,那么也许可以从这段代码开始:

@for (var i = 1; Model.[your model].Count(); i++)
{
    <input asp-for="[your model][i].Active" />
}

注意[your model]是类模型或PageModel的名称(如果使用Razor页面)。