Asp.net mvc 为什么ASP.NET核心标记辅助布尔值复选框不显示标签?

Asp.net mvc 为什么ASP.NET核心标记辅助布尔值复选框不显示标签?,asp.net-mvc,asp.net-core,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

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

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

@DisplayNameFor(m=>m.RememberMe)

既然输入和标签都是标记帮助器,那么名称不应该像电子邮件和同一页面上的其他输入标记那样自动呈现吗?

非常有趣的问题

根据MVC,
labeltaghelper
优先于可用的子内容。只有当没有可用的子内容时,才会将其放入默认标签文本(顺序和可能的值)

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

就我个人而言,我认为在模板中,使用
@Html.DisplayNameFor(m=>m.RememberMe)
只是一个设计决策,这样它就可以很好地与bootstrap配合

更新:这将显示相同的信息,但格式不太好

<div class="checkbox">
<input asp-for="RememberMe" />
 <label asp-for="RememberMe">
 </label>
</div>

非常有趣的问题

根据MVC,
labeltaghelper
优先于可用的子内容。只有当没有可用的子内容时,才会将其放入默认标签文本(顺序和可能的值)

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

就我个人而言,我认为在模板中,使用
@Html.DisplayNameFor(m=>m.RememberMe)
只是一个设计决策,这样它就可以很好地与bootstrap配合

更新:这将显示相同的信息,但格式不太好

<div class="checkbox">
<input asp-for="RememberMe" />
 <label asp-for="RememberMe">
 </label>
</div>


对我来说似乎不合适。您可以将带有文本+输入框的标签用作子元素,而不使用
for
属性,或者将标签和输入置于同一级别(div的子项),然后在标签上使用
for
。看,我觉得不太对。您可以将带有文本+输入框的标签用作子元素,而不使用
for
属性,或者将标签和输入置于同一级别(div的子项),然后在标签上使用
for
。请参阅,当我删除“@Html.DisplayNameFor(m=>m.RememberMe)”时,不会显示“记住我”。如果页面上显示“记住我”,cshtml文件会是什么样子的。@PeterKellner更新了答案以显示一个简单的示例。希望这能有所帮助。当我删除“@Html.DisplayNameFor(m=>m.RememberMe)”时,没有显示“记住我”。如果页面上显示“记住我”,cshtml文件会是什么样子的。@PeterKellner更新了答案以显示一个简单的示例。希望有帮助。