在 Orchard 的替代形状 cshtml 文件中获取分类字段的 url

Get url of a taxonomy field inside an alternate shape cshtml file in Orchard

我用Orchard 1.10.1。我有一个 CustomContentType 有一个 "Group" Taxonomy field 。在 Content-CustomContentType.Detail.cshtml 替代中,我想对某个分类术语有一个 link。这是我的代码:

<a href='???'>@Model.ContentItem.CustomContentType.Group.Terms[0].Name</a>

如何让 url 替换上面代码中的 '???'

提前致谢。

您有几个选项可供选择。我刚刚将它们全部直接输入到浏览器中,而 Orchard 是一个难以驾驭其模型的野兽,所以如果它们在你面前爆炸,请告诉我,我会深入挖掘 :)

让果园把整个link

查看 TaxonomyItemLink.cshtml 文件,您可以看到可以像这样显示 link:

@using Orchard.Taxonomies.Models
@{
    TermPart part = Model.ContentPart;
}
@Html.ItemDisplayLink(part)

所以在你的情况下你可以使用:

@Html.ItemDisplayLink((ContentPart)Model.ContentItem.CustomContentType.Group.Terms[0])

刚拿到URL

您可以使用 @Url.ItemDisplayUrl() 将可路由的内容项变成 url。

<a href="@Url.ItemDisplayUrl((ContentPart)Model.ContentItem.CustomContentType.Group.Terms[0])">
  @Model.ContentItem.CustomContentType.Group.Terms[0].Name
</a>

因为它是一种扩展方法,所以您不能传递 dynamic,所以您需要转换类型。这就是 (ContentPart) 存在的原因。

只需要 Slug

实际上,在这种情况下 TermsPart class 上已经有一个 .Slug 属性,所以这也可能有效:

<a href="@Model.ContentItem.CustomContentType.Group.Terms[0].Slug">
  @Model.ContentItem.CustomContentType.Group.Terms[0].Name
</a>

不过我不确定 slug 是只包含结束位还是完整的 url。