我在umbraco代码中看到过,开发人员可以参考内容页面,如下所示:
var content = UmbracoContext.PublishedContentRequest.IsInternalRedirectPublishedContent
? UmbracoContext.PublishedContentRequest.InitialPublishedContent
: UmbracoContext.PublishedContentRequest.PublishedContent;
但为什么他们这样做?
为什么不使用@ Model.Content()
什么是(他们做了什么):
IsInternalRedirectPublishedContent?
InitialPublishedContent?
PublishedContent?
答案 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
将引用您内部重定向到的节点。