2017-04-26 75 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更新了答案,以顯示一個簡單的例子。希望有所幫助。 –

相關問題