【问题标题】:How to create custom control based on Property Type in the Model Class in MVC Core如何在 MVC Core 的模型类中创建基于属性类型的自定义控件
【发布时间】:2019-04-04 01:58:28
【问题描述】:

我正在创建 MVC Web 应用程序,我想在将属性定义为 Bool 时:

 public bool? Active { get; set; } 

然后在视图中,将生成包含特定cssclass“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 类型为例! 是否有任何提示或您可以提供任何示例?

【问题讨论】:

    标签: asp.net-core-mvc


    【解决方案1】:

    要使用 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] 是您的类模型的名称,如果您使用 Razor Pages,则为 PageModel。

    【讨论】:

    • 谢谢@Llazar,我知道如何从模型生成 CheckBox,但我真正需要的是:如何用 DIV 包围复选框并定义特定的 css 类,如“form-check-input”,对于模型中的 Bool 属性(例如:上面我的示例中的 Active),否则我需要通过 Class Model 定义它时自动应用引导布局,请返回主线程,它有更清晰的解释! ——
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多