Asp.net Core禁用li

时间:2017-03-17 09:32:16

标签: angularjs asp.net-core tag-helpers

在Asp.net核心Web应用程序中,我在View中有一个html部分,我想禁用其中一个标记,但我没有标记它的工作。
<ul class="nav navbar-nav"> <li ><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li> <li ><a asp-area="" asp-controller="Home" asp-action="About">About</a></li> <li ><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li> </ul>
我发现最接近的方式是 class =&#34;禁用&#34;

<li class="disabled"><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>  

但是,关于仍然可以点击 在一些建议使用自定义Authoring Tag Helpers的类似线程中,但它无法通过disable属性设置属性。它是只读的。
任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以使用JavaScript <event.preventDefault()禁用链接。您可以创建TagHelper,而不是在任何地方添加它:

[HtmlTargetElement(Attributes = "disabled-link")]
public class DisabledLinkTagHelper : TagHelper
{
    public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        output.Attributes.SetAttribute("onclick", "event.preventDefault()");
        return base.ProcessAsync(context, output);
    }
}

然后,不要忘记在视图中声明标记助手:

@addTagHelper *, WebApplication1

并使用它:

<a href="test" disabled-link>Disabled</a>

此生成

<a onclick="event.preventDefault()" href="test">Disabled</a>