相关疑难解决方法(0)

我的自定义ASP.Net 5 MVC 6 Tag Helpers是否应该有一个asp-前缀?

我一直在阅读有关MVC 6中对Tag Helpers的新支持,现在需要创建自己的.我看到现有HTML元素的内置标记助手都以"asp-"为前缀

例如: <a asp-controller="Home" asp-action="Index">Home</a>

但是我自己的自定义标签助手呢.我是否还应该使用"asp-"作为前缀,以表明它正在服务器上运行.或者这应该保留给框架属性?我应该创建自己的项目/公司名称前缀吗?

我错过了关于这个主题的指导吗?

asp.net-core-mvc tag-helpers asp.net-core

5
推荐指数
1
解决办法
439
查看次数

确定Tag Helper中的当前路由.这可能吗?

在ASP.NET MVC 6项目中,我有以下内容:

[Route("help/how-it-works")]
public IActionResult HowItWorks() {
   return View();
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个标签助手,如下所示:

<a class="menu" asp-controller="Help" asp-action="HowItWorks" route-is="help/how-it-works" css-class="active">How it works</a>
Run Code Online (Sandbox Code Playgroud)

所以route-is标签帮助器将检查当前路由是否为"help/how-it-works"...如果是,则将"active"添加到A标签的css类.

所以我开始创建一个标签助手:

[TargetElement("a", Attributes = "route-is, css-class")]
public class RouteTagHelper : TagHelper
{

public override void Process(TagHelperContext context, TagHelperOutput output)
{

    String routeIs = context.AllAttributes["route-is"].ToString();

    String cssClass = context.AllAttributes["css-class"].ToString();

    if (String.IsNullOrWhiteSpace(cssClass))
        cssClass = "active";

    ViewContext.RouteData.Values.Keys;

}
}// Process
Run Code Online (Sandbox Code Playgroud)

我的问题是如何确定当前路由是否为"help/how-it-works",以及是否将Css类添加到A标记而不更改其他任何内容.

有没有人知道如何做到这一点?

更新1

使用属性路由时解决了重复值的问题,并添加了Daniel JG提出的替代方法

[TargetElement("a", Attributes = RouteIsName)]
[TargetElement("a", Attributes = RouteHasName)]
public class ActiveRouteTagHelper : TagHelper
{
    private const String …
Run Code Online (Sandbox Code Playgroud)

asp.net-core-mvc

4
推荐指数
1
解决办法
4309
查看次数