Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Orchard ContentItem显示URL_Url_Controller_Routes_Orchardcms_Sitemap - Fatal编程技术网

获取Orchard ContentItem显示URL

获取Orchard ContentItem显示URL,url,controller,routes,orchardcms,sitemap,Url,Controller,Routes,Orchardcms,Sitemap,当我处于备用视图中时,我知道我可以使用以下方法获取ContentItem的显示URL: @Url.ItemDisplayUrl(contentItem) 但我不知道在控制器上下文(ActionResult)中如何获取显示URL。出于站点地图的目的,我需要列出的ContentItems的URL 我正在使用下面的代码 public class SiteMapResult : ActionResult { readonly IContentManager _contentManager;

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

@Url.ItemDisplayUrl(contentItem)

但我不知道在控制器上下文(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

        }

        ...

    }
}
公共类SiteMapResult:ActionResult
{
只读IContentManager\u contentManager;
只读ITagService(标签服务);
公共站点MapXmlResult(IContentManager contentManager,ITagService标记服务)
{
_contentManager=contentManager;
_tagService=tagService;
}
公共覆盖无效ExecuteSult(ControllerContext上下文)
{
context.HttpContext.Response.ContentType=“text/xml”;
字符串host=context.HttpContext.Request.Url.host;
StringBuilder xml=新的StringBuilder();
xml.Append(@“”);
xml.Append(@“”);
var contentItems=_contentManager.Query(VersionOptions.Latest,GetContentTypeNames().ToArray()).List();
foreach(contentItems中的var contentItem)
{
//contentItem的显示url
}
...
}
}
如何获取ContentItem显示URL?

您可以通过URL属性从控制器访问URL帮助程序。因此,如果您没有忘记在控制器文件的顶部使用Orchard.Mvc.Html,Url.ItemDisplayUrl将对您可用