2017-04-26 78 views
0

我正在查看新的asp.net核心帐户视图页面的login.cshtml页面,我注意到使用DisplayNameFor输出字段名称(“RememberMe”)。为什么没有足够的这个?看起来标签没有参与。为什么布尔复选框的ASP.NET Core Tag Helper不显示标签?

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

由于输入和标签都标记助手,不应该的名字被渲染自动像同一页上的电子邮件和其他输入标签?

+0

看起来不正确我。您可以使用带有文本+输入框的Label作为没有'for'属性的子元素,或者您在同一级别上具有标签和输入(div的子元素),然后在标签上使用'for'。见https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label – Tseng

回答

1

非常有趣的问题。

根据MVC codelabeltaghelper优先于可用的子内容。只有当没有可用的子内容时,才会输入默认标签文本(订单和可能值为per

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

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

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

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

当我删除“@ Html.DisplayNameFor(m => m.RememberMe)”时,没有“记住我”出现。 cshtml文件看起来会如何“记住我”显示在页面上。 –

+1

@PeterKellner更新了答案,以显示一个简单的例子。希望有所帮助。 –

相关问题