url - 获取 Orchard ContentItem 显示 URL

标签 url controller routes orchardcms sitemap

当我处于备用 View 时,我知道我可以使用以下方法获取 ContentItem 的显示 URL:

@Url.ItemDisplayUrl(contentItem)

但我不知道如何在 Controller 上下文 (ActionResult) 中获取显示 URL。出于站点地图的目的,我需要列出的 ContentItems 的 URL。

我正在使用下面的代码。

public class SiteMapResult : ActionResult
{
    readonly IContentManager _contentManager;
    readonly ITagService _tagService;

    public SiteMapXmlResult(IContentManager contentManager, ITagService tagService)
    {
        _contentManager = contentManager;
        _tagService = tagService;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.ContentType = "text/xml";

        string host = context.HttpContext.Request.Url.Host;
        StringBuilder xml = new StringBuilder();
        xml.Append(@"<?xml version=""1.0"" encoding=""UTF-8""?>");
        xml.Append(@"<urlset xmlns=""http://www.sitemaps.org/schemas/sitemap/0.9"">");

        var contentItems = _contentManager.Query(VersionOptions.Latest, GetContentTypeNames().ToArray()).List();
        foreach (var contentItem in contentItems)
        {

            // The display url of contentItem

        }

        ...

    }
}

如何获取 ContentItem 显示 URL?

最佳答案

确实可以通过 Url 属性从 Controller 访问 Url 助手。因此,只要您不要忘记在 Controller 文件之上使用 Orchard.Mvc.Html,您就可以使用 Url.ItemDisplayUrl。

关于url - 获取 Orchard ContentItem 显示 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16862904/

相关文章:

java - Android,使用异步任务从 url 中获取文本

ruby-on-rails - 仪表板命名空间的 Rails 路由帮助

javascript - AngularJS 通知模型更改的 View

java - Apache Camel : Splitter, CBR 还是动态路由器?

asp.net - 带有虚拟目录的 ASP.net 母版页中的基本 URL

php - VirusTotal 服务 API 始终返回响应代码 1

routes - 使用Rails 3路由,如何只允许来自127.0.0.1的请求?

python - 如何为 n 个输入生成 Banyan 网络

javascript - 在 last/之后添加到 URL

ruby-on-rails - 如何编写带有身份验证的 Rspec Controller 测试?