为什么 ASP.NET Core Tag Helper for Boolean Checkbox 不显示标签?

Pet*_*ner 2 asp.net-mvc asp.net-core

我正在查看新的 asp.net 核心帐户视图页面的 login.cshtml 页面,我注意到使用 DisplayNameFor 来输出字段的名称(“RememberMe”)。为什么这还不够?似乎标签没有参与。

<div class="checkbox">
 <label asp-for="RememberMe">
    <input asp-for="RememberMe" />
    @Html.DisplayNameFor(m => m.RememberMe)
 </label>
</div>
Run Code Online (Sandbox Code Playgroud)

由于输入和标签都是标签助手,名称不应该像电子邮件和其他输入标签一样自动呈现在同一页面上吗?

Muq*_*han 5

很有趣的问题。

根据 MVC代码labeltaghelper优先考虑可用的子内容。只有当没有可用的子内容时,它才会放入默认标签文本(每个的顺序和可能的值)

如果您删除标签的所有子元素,您会注意到标签实际上将使用显示名称或属性名称(记住我)

就我个人而言,我认为在模板中,这只是一个使用的设计决定,@Html.DisplayNameFor(m => m.RememberMe)以便它与引导程序配合得很好。

更新:这将显示相​​同的信息,但格式不会那么好

<div class="checkbox">
<input asp-for="RememberMe" />
 <label asp-for="RememberMe">
 </label>
</div>
Run Code Online (Sandbox Code Playgroud)