如何为 ASP.NET Core 制作精美的复选框模板?
How can I make a fancy checkbox template for ASP.NET Core?
我的模型中有很多 boolean
,我们正在使用 Bootstrap,所以对于每个布尔值 属性,我是 copy/paste重构:
<div class="form-group">
<div class="custom-control custom-checkbox ">
<input asp-for="IsFoo"/>
<label asp-for="IsFoo"></label>
</div>
</div>
...但这很愚蠢。我尝试将其添加到 Views/Shared/EditorTemplates/bool.cshtml
:
@model bool?
<div class="form-group">
<div class="custom-control custom-checkbox ">
<input asp-for="@Model"/>
<label asp-for="@ViewData.TemplateInfo.FormattedModelValue"></label>
</div>
</div>
... 并用 @Html.EditorFor(m => m.IsFoo)
调用它,但我得到的只是来自默认模板的普通 input
元素。
我做错了什么 给模板命名'boolean.cshtml'
是 ViewData.TemplateInfo.FormattedValue
从 属性 中获取 Display(Name="xxx")
属性的正确值。 ViewData.ModelMetadata.DisplayName
- 在 ASP.NET Core 中是否有一些新的和改进的版本而不是我应该使用的编辑器模板(比如 Tag Helpers?)而不是 "old" 方式,如果是这样,怎么办我去做?
使用 <partial>
标签助手:
<partial name="MyCheckbox" for="IsFoo" />
它也适用于绑定属性:
class MyModel
{
public List<MyCheckboxModel> MyCheckboxList { get; set; }
}
class MyCheckboxModel
{
public Boolean IsChecked { get; set; }
}
@for( Int32 i = 0; i < this.Model.MyCheckboxList.Count; i++ )
{
<partial name="MyCheckbox" for="MyCheckboxList[i]"
}
将您的局部视图更改为:
@model MyCheckboxModel
<div class="form-group">
<div class="custom-control custom-checkbox">
<input asp-for="@Model"/>
<label asp-for="@Model"></label>
</div>
</div>
for=""
属性导致部分中的 name/id/binding 上下文与命名的 属性 匹配,因此 ASP.NET 将施展魔法以确保 <input asp-for="@Model" />
会对应Model.MyCheckBoxList[0]
等等。
我的模型中有很多 boolean
,我们正在使用 Bootstrap,所以对于每个布尔值 属性,我是 copy/paste重构:
<div class="form-group">
<div class="custom-control custom-checkbox ">
<input asp-for="IsFoo"/>
<label asp-for="IsFoo"></label>
</div>
</div>
...但这很愚蠢。我尝试将其添加到 Views/Shared/EditorTemplates/bool.cshtml
:
@model bool?
<div class="form-group">
<div class="custom-control custom-checkbox ">
<input asp-for="@Model"/>
<label asp-for="@ViewData.TemplateInfo.FormattedModelValue"></label>
</div>
</div>
... 并用 @Html.EditorFor(m => m.IsFoo)
调用它,但我得到的只是来自默认模板的普通 input
元素。
我做错了什么给模板命名'boolean.cshtml'是中获取ViewData.TemplateInfo.FormattedValue
从 属性Display(Name="xxx")
属性的正确值。ViewData.ModelMetadata.DisplayName
- 在 ASP.NET Core 中是否有一些新的和改进的版本而不是我应该使用的编辑器模板(比如 Tag Helpers?)而不是 "old" 方式,如果是这样,怎么办我去做?
使用 <partial>
标签助手:
<partial name="MyCheckbox" for="IsFoo" />
它也适用于绑定属性:
class MyModel
{
public List<MyCheckboxModel> MyCheckboxList { get; set; }
}
class MyCheckboxModel
{
public Boolean IsChecked { get; set; }
}
@for( Int32 i = 0; i < this.Model.MyCheckboxList.Count; i++ )
{
<partial name="MyCheckbox" for="MyCheckboxList[i]"
}
将您的局部视图更改为:
@model MyCheckboxModel
<div class="form-group">
<div class="custom-control custom-checkbox">
<input asp-for="@Model"/>
<label asp-for="@Model"></label>
</div>
</div>
for=""
属性导致部分中的 name/id/binding 上下文与命名的 属性 匹配,因此 ASP.NET 将施展魔法以确保 <input asp-for="@Model" />
会对应Model.MyCheckBoxList[0]
等等。