为什么关闭标签显示在视图中?

时间:2018-04-30 20:10:19

标签: c# asp.net razor

此代码:

<p class="options">
    <a class="btn btn-default btn-lg selector1" @Html.ActionLink("Login", "Login", "Account")></a>
    <a class="btn btn-default  btn-lg selector2" @Html.ActionLink("Register", "Register", "Account")> </a>
</p>

如果删除两行中括号后的结束标记,则会给出段落没有结束标记的错误。然而,它的结束标记出现在应用程序中?我在其他地方使用它而没有结束标签,我不确定为什么它坚持在这里只展示它?

1 个答案:

答案 0 :(得分:3)

您使用@Html.ActionLink()错误。

ActionLink()在页面上呈现完整的锚标记,您将该标记生成嵌入到另一个标记中(生成格式错误的HTML)。

您可能想要做的是:

<p class="options">
    @Html.ActionLink("Login", "Login", "Account", htmlAttributes: new { @class="btn btn-default btn-lg selector1" })
    @Html.ActionLink("Register", "Register", "Account", htmlAttributes: new { @class="btn btn-default btn-lg selector2" })
</p>

请注意htmlAttributes属性。您可以在此处传递包含html属性的匿名对象。由于您需要考虑class=""属性,因此可以向其传递一个如下所示的对象:

new { @class="btn btn-default btn-lg selector2" }

请记住在“class”的开头使用@,因为class是C#中的保留关键字,@符号将“转义”它。