Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在MVC中禁用共享视图中的链接_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 在MVC中禁用共享视图中的链接

Asp.net mvc 在MVC中禁用共享视图中的链接,asp.net-mvc,Asp.net Mvc,我有一个MVC项目,它使用共享布局来呈现所有页面顶部和左侧的菜单。我有一个页面,为非活动用户显示消息。我想显示这个消息在完全相同的布局与所有的菜单,但菜单应该被禁用,用户不能点击他们。我能用什么?这里有像TagHelper这样的东西我可以用吗 这是布局中显示带有链接的菜单的代码: !-- TOP NAVIGATION --> <div id="top-nav" class="span_12 section"> <div class="span_10 content

我有一个MVC项目,它使用共享布局来呈现所有页面顶部和左侧的菜单。我有一个页面,为非活动用户显示消息。我想显示这个消息在完全相同的布局与所有的菜单,但菜单应该被禁用,用户不能点击他们。我能用什么?这里有像TagHelper这样的东西我可以用吗

这是布局中显示带有链接的菜单的代码:

  !-- TOP NAVIGATION -->
 <div id="top-nav" class="span_12 section">
 <div class="span_10 content group">
    <a href="loginView.html" class="span_4 col cf-logo"><img src="~/content/images/logo.png"></a>
    <ul class="right">
        <li class="colWrap">
            <a href="@Url.Action("Dashboard","Home")" class="dashboard-view"><span class="icon-dash"></span>dashboard</a>
        </li>
        <li class="colWrap">
            <!-- if there are document alerts -->
            <span class="icon-alert-13"></span>
            <!-- end if -->
            <a href="@Url.Action("Document","Document")" class="documents-view"><span class="icon-docs"></span>documents</a>
        </li>
        <li class="colWrap">
            <a href="@Url.Action("HelpCenterIndex","HelpCenter")" class="helpcenter-view"><span class="icon-help"></span>help center</a>
        </li>
    </ul>
</div>
 </div>
 <!-- LEFT SIDE NAVIGATION -->
  <div id="left-nav" class="span_1 section">
<ul id="nav-icons" class="span_12 section">
    <li class="span_12 colWrap">
        <a href="@Url.Action("Dashboard","Home")" class="dashboard-view">
            <span class="icon-dash"></span>
            Dashboard
        </a>
    </li>
    <li class="span_12 colWrap">
        <a href="@Url.Action("Document","Document")" class="documents-view">
            <span class="icon-docs"></span>
            Documents
        </a>
    </li>
    <li class="span_12 colWrap">
        <a href="@Url.Action("HelpCenterIndex","HelpCenter")" class="helpcenter-view">
            <span class="icon-help"></span>
            Help Center
        </a>
    </li>
</ul>
!--顶部导航-->

为什么需要TagHelper?您始终可以在查看时检查您的用户,而不是

}
其他的
{
仪表板
}


你可以自己实现,不是吗?它看起来像这样:

[HtmlTargetElement("a", Attributes = "is-disabled")]
public class DisableLinkTagHelper : TagHelper
{
    [HtmlAttributeName("is-disabled")]
    public bool Disabled { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        if (Disabled)
        {
            output.Attributes.RemoveAll("href");
        }
    }
}
在视图中导入它,如下所示:

@addTagHelper "*, {Name of your assembly}"
并使用它:

 <a is-disabled="true" href="@Url.Action("Dashboard","Home")" class="dashboard-view">
      <span class="icon-dash"></span>dashboard
 </a>
并像调用常规函数一样调用它:

@RenderMenuLink(Url.Action("Dashboard","Home"), "dashboard-view", "icon-dash", "dashboard", false)

有很多方法可以做到这一点。。局部视图。。儿童行动。。javascript。。而不是为每个项目编写if/else<代码>$(“#导航图标a”)。例如,removeAttr(“href”)将删除ul id中的所有href属性=“导航图标这正是您将使用razor
@helper
-s的场景,但出于某种奇怪的原因,他们决定将其从MVC6中删除。如果您在MVC5中,您仍然可以使用它们,但是由于您提到了标记帮助程序,我认为情况并非如此。@GwynBleidd实际上我使用的是MVC5。有关于如何使用@helper的帮会吗?这正是我的意思,但不确定如何使用Taghelpers。我在vs2013和MVC5。我无法使用。@nik我已经更新了答案,并包含了MVC 5辅助方法
@helper RenderMenuLink(string url, string cssClass, string icon, string text, bool enabled)
{
    var href = "";
    if (enabled)
    {
        href = string.Format("href=\"{0}\"", url);
    }

    <a @href class="@cssClass">
        <span class="@icon"></span> @text
    </a>
}
@RenderMenuLink(Url.Action("Dashboard","Home"), "dashboard-view", "icon-dash", "dashboard", false)