喜欢在html虚拟链接中
<a href="#">link</a>
如何在mvc中实现这一目标?
我写了这个,但它指的是该链接下的下拉页面。在链接上悬停时,我只想要下拉,点击链接将无效。
@{
var action = ViewContext.RouteData.Values["Action"].ToString();
}
@Html.ActionLink("Link", "", "", null, new {@class="selected" })
<li> @if (action == "Link1" || action == "Link2"
|| action == "Link3" || action == "Link4")
{
@Html.ActionLink("Link", "", "", null, new {@class="selected" })
}
else {
@Html.ActionLink("Link", "", "", null, new {@class="" })
}
<li>@Html.ActionLink("Link1", "Link1action", "Controller")</li>
<li>@Html.ActionLink("Link2", "Link1action", "Controller")</li>
<li>@Html.ActionLink("Link3", "Link1action", "Controller")</li>
<li>@Html.ActionLink("Link4", "Link1action", "Controller")</li>
这是活动链接突出显示菜单的代码。链接菜单只是一个虚拟的简单html使用#in href实现目的。
答案 0 :(得分:2)
Url.Action
和Html.ActionLink
用于定义指向您的某条路线的网址或HTML链接。如果您想要一个不指向其中一条路线的链接,则不应使用这些方法。
如果要在路由链接和非路由链接之间保持外观的一致性(在.cshtml文件中),您可以执行以下操作。
如果是路线链接,请以这种方式编写HTML链接:
<a href="@Url.Action("Action", "Controller")" class="@selected">Text</a>
如果是非路由链接,请以这种方式编写HTML链接:
<a href="https://www.google.com" class="@selected">Text</a>
<a href="#" class="@selected">Text</a>
此处selected
被假定为string
,其值为"selected"
或""
/ null
。
如果定义辅助函数:
string Css(string css, bool condition)
{
return condition ? css : null;
}
你可以像这样使用它:
<a href="#" class="@Css("selected", action == "Link1")">Text</a>
答案 1 :(得分:1)
尝试以下方法:
@if (action == "Link1" || action == "Link2"
|| action == "Link3" || action == "Link4")
{
@Html.Raw(String.Format("<a href=\"#\" class = 'selected' >link</a>" ))
}
else {
@Html.Raw(String.Format("<a href=\"#\" class = '' >link</a>" ))
}
希望这有帮助!
答案 2 :(得分:0)
您不必将所有HTML都写为Razor。只需用纯HTML编写虚拟链接