- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 ASP.NET 5 MVC6 RC1 中——我有一个 ViewComponent,它旨在代表我传统的“屏幕左侧”主菜单。
我正在编写我的第一个 TagHelper 来表示每个菜单项链接。
我卡在了尝试创建超链接的部分。
如何解决 ~/dashboard/summary?
如果我在此页面上显示菜单,链接显示为 /dashboard/~/dashboard/summary
。
@Url.Content("...")
显示 @Url.Content("...")
即不作为 Razor 处理。标签助手输出纯。
理想情况下,我希望解决方案与 .NET Core 兼容,因为我最终的目标是 .NET Core 可部署解决方案。
见下文:
namespace Website
{
/// <summary>
/// <MainMenuLink area="" controller="" action=""></MainMenuLink>
///
/// to render
///
/// <a href="~/account/manage/ChangePassword" class="list-group-item @GetClassName("manage", "changepassword")">
/// <p class="list-group-item-text"><i class="fa fa-terminal"></i> Change my password</p>
/// </a>
///
///
/// </summary>
[HtmlTargetElement(Attributes = "area, controller, action")]
public class MainMenuLinkTagHelper : TagHelper
{
[HtmlAttributeName("area")]
public string Area { get; set; }
[HtmlAttributeName("controller")]
public string Controller { get; set; }
[HtmlAttributeName("action")]
public string Action { get; set; }
public UrlHelper urlHelper { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "a"; // Works
// Stuck here - I want ~/ to resolve to the base root.
// At the moment the address is here is localhost:XXXXX/dashboard/~/dashboard/summary
// Would prefer to use a method which can be used with .net core and not System.Web
output.Attributes.Add("href", "~/dashboard/summary");
output.Content.SetHtmlContent("Click me");
}
/// <summary>
}
}
谢谢!丹.
最佳答案
ASP Core 2.0 默认情况下似乎没有在 IServiceCollection
中包含 IActionContextAccessor
,因此您需要在启动时注册它以接受工作解决方案:
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
否则,提供的属性可以将 TagHelper
的属性设置为扩展 ActionContext
的 ViewContext
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
[HtmlTargetElement("my-tag")]
public class MyTagHelper : TagHelper {
private readonly IUrlHelperFactory urlHelperFactory;
[ViewContext]
[HtmlAttributeNotBound]
public ViewContext ViewContext { get; set; }
public MyTagHelper (IUrlHelperFactory urlHelperFactory) {
this.urlHelperFactory = urlHelperFactory;
}
public override void Process(TagHelperContext context, TagHelperOutput output) {
var urlHelper = urlHelperFactory.GetUrlHelper(ViewContext);
}
}
注意:ViewContext
属性必须有一个公共(public)设置方法
关于c# - 如何解析来自 TagHelper 的 ~ 根链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34385547/
有没有办法让 TagHelper 渲染另一个 TagHelper? 示例标签助手; public class OuterTagHelper : TagHelper { public overr
我要触发股票ScriptTagHelper ( view source on GitHub ) 以便模拟 asp-append-version="true"属性。 我知道使用它的正确方法是改变这个:
我正在编写一个简单的分页 TagHelper,我希望输出如下所示: Some Text Some Other Text ... 我的想法是,在定义我的类时,我会生成“a”元
我想知道是否可以从 ASP.Net Core 版本 2.1/2.2 中的子 TagHelper 元素访问父 TagHelper 的属性。 我正在寻找是否有可能建立子级-父级 TagHelper 关系,
这是对 this question 的后续问题,这似乎适用于较旧的 ASP.NET Core 版本(我使用的是 2.1)。 我正在尝试从 TagHelper 中手动调用 TagHelper。应用上面链
在带有 Razor View 的 ASP.NET Core 2.0 项目中,我在运行时加载一个包含 TagHelpers 的程序集。 当 .dll 位于项目的 bin 文件夹中或当 TagHelper
我正在尝试在 MVC 6/ASP.Net vNext 中创建一个自定义标签助手 - taghelper 工作正常,但是有一种方法可以指定有效的 asp- 属性以与标签一起使用,以便它们出现在智能感知?
尝试编写自定义 TagHelper 来显示模型属性的 Description 属性。一切似乎都正常,但描述文本没有传递到我的 ModelExpression 元数据,它仍然是 null。 这是一个 a
带有包含此行的局部 View 我得到以下输出 > 这意味着我需要使用像这样的 Bind 属性在我的操作定义中考虑该“表单”前缀 public async Task SendContactForm(
如果我有这样的标签: Some content 如何获取 TagHelper 中的内容? 我在 TagHelper 或 TagHelperContext 上看不到任何内容。 我正在尝试解析标签的内容。
我使用的是asp core 2.0 MVC,经常在表单中使用这样的代码:
在 C# (ASP.NET Core) 项目中,登录后,站点必须根据用户的权限列出一个带有子菜单的菜单。此菜单出现在所有站点中。基本上是一个仪表板菜单。 这个菜单(子菜单)的内容是动态的,根据用户的许
某些模型属性具有“必需”数据注释,我需要在 TagHelper 类中读取这些注释。 public partial class Sale { [Required] public stri
我正在编写一个自定义 TagHelper 并希望在其中呈现一个 ViewComponent。 类似于 vc:xyz 标记助手所做的事情,但以一种更可控的方式,以便我可以在运行时确定要渲染哪个 View
我创建了一个标签助手,并希望在我的 Blazor 示例项目中使用它。但是,当我想使用标签助手时,编译器会提示: CS0103 当前上下文 FirstBlazorApp 中不存在名称“StartTagH
在链接上指定 asp-controller 和 asp-action 时,同时传递 id 属性的语法是什么? 例如例如,如果我想链接到给定对象的编辑 URL,则所需的 URL 为 /user/edit
我正在尝试创建一个表标记助手,它可以自动解析给定模型中的列和行。 这是它应该如何(理论上使用): 这应该自动显示列名和行。 生成列名并不难,因为我正在传递模型 [HtmlTargetElement
我写了一个标签助手,我需要获取模型属性的类型,因为我想基于它创建一个 html 标签实例。 如果它的类型是Boolean,我想创建Checkbox 的实例等等。 [HtmlTargetElement(
我到处搜索,我想要的基本上是不使用 Controller 或操作上下文的 MVC6 的 RenderViewToString。 由于自定义 TagHelpers 进入了它们自己的类,这些上下文将不可用
在 ASP.NET 5 MVC6 RC1 中——我有一个 ViewComponent,它旨在代表我传统的“屏幕左侧”主菜单。 我正在编写我的第一个 TagHelper 来表示每个菜单项链接。 我卡在了
我是一名优秀的程序员,十分优秀!