获取Umbraco中的内容节点参考?

时间:2017-01-16 15:16:48

标签: asp.net-mvc umbraco umbraco6

我在umbraco代码中看到过,开发人员可以参考内容页面,如下所示:

var content = UmbracoContext.PublishedContentRequest.IsInternalRedirectPublishedContent
                ? UmbracoContext.PublishedContentRequest.InitialPublishedContent
                : UmbracoContext.PublishedContentRequest.PublishedContent;

但为什么他们这样做?

为什么不使用@ Model.Content()

什么是(他们做了什么):

  • IsInternalRedirectPublishedContent?

  • InitialPublishedContent?

  • PublishedContent?

1 个答案:

答案 0 :(得分:3)

在Umbraco,有一堆保留的属性,你可以放在文件上以获得一些隐藏的"功能。其中一个是umbracoInternalRedirectId,它允许您执行内部重定向并呈现另一个节点而不是请求的节点。

您可以阅读有关其他一些保留属性here的更多信息。

如果您使用内部重定向,您的请求将在内部被重定向到另一个节点ID,然后一切都将呈现,就像您最初请求其他节点一样(但是您将看不到浏览器重定向,它将不会反映在URL中。)

  

什么是(他们做了什么):

     

IsInternalRedirectPublishedContent?

如果您要重定向的内容目前已发布,则会出现这种情况。如果内容未发布,则为false。

  

InitialPublishedContent?

这将是您最初点击的内容项目(在重定向发生之前)。

  

PublishedContent?

这将是您重定向到的内容项(这与您上面提到的当前内容项相同)。

  

但为什么他们这样做?

上面所做的是尝试在重定向的情况下,在发生任何内部重定向之前始终获取对初始内容的引用 - 如果没有内部重定向发生,则只获取当前内容项。< / p> 然而,考虑到IsInternalRedirectPublishedContent返回false,InitialPublishedContent将与PublishedContent相同。这样做似乎没有意义。

只需执行以下操作即可获得与上述相同的结果:

var content = UmbracoContext.PublishedContentRequest.InitialPublishedContent;

然而,情况可能并非总是如此,而且这段代码是为了解决旧版Umbraco中的错误。

所以我说除非你的网站有一个非常奇怪的重定向设置,否则没有理由不只使用这段代码而不是你发布的代码。

完全回答您的问题:

在上面的代码中,在模板中使用content将是对配置重定向的页面的引用。使用Model.Content将引用您内部重定向到的节点。