Kentico文档获取页面元数据自定义页面类型
当尝试在自定义页面类型TreeNode上使用GetStringValue()
检索DocumentPageTitle
和DocumentPageDescription
时,结果总是会返回为传递给方法的默认值(在此例中为空字符串) 。Kentico文档获取页面元数据自定义页面类型
我能够成功检索其他列值以及标准文档属性,如DocumentName
,DocumentID
和AbsoluteURL
,但不是文档元属性。
在文件/页面元选项卡中的各个领域确实有值,并正在默认情况下,如<meta name="description" content=".." />
// returns empty string
string documentPageDescription = DocumentContext.CurrentDocument.GetString("DocumentPageDescription", string.Empty);
// returns empty string
TreeNode document = parameters[0] as TreeNode;
string documentPageDescription = document.GetStringValue("DocumentPageDescription", string.Empty);
我试过设置从页面选项继承领域的渲染成功键入到“页面(菜单项)”,但没有帮助。
自定义页面类型是否需要从某个特定对象继承,或者是否已激活特定设置才能访问这些值?或者如果我认为是TreeNode
实际上不是,我怎么能从这个对象具有以前列出的属性可用的TreeNode?
感谢您提供任何帮助。
的DocumentPageTitle
和DocumentPageDescription
都回来为空时,自定义页面类型文件/页面从父/全局值继承。
我能够使用以下时不继承,而回落至父值继承正在发生时获得的属性:
string documentPageTitle = document.GetStringValue("DocumentPageTitle", DocumentContext.CurrentTitle);
这种方法来自于以下问题上Kentico DevNet 。
谢谢你的帮助和建议,很感激。
ValidationHelper.GetString(CMS.DocumentEngine.DocumentContext.CurrentDocument.GetValue("DocumentPageDescription"), string.Empty)
有两件事要检查,一个,你确定元数据可以在你正在拉的网页上?二,你的API实际上是拉该页面的所有数据吗?
我在测试中使用过这些数据,并且都返回了元数据。
var page = DocumentHelper.GetDocuments().Path("/Articles/Coffee-Beverages-Explained").FirstObject;
Response.Write(page.GetStringValue("DocumentPageDescription", string.Empty));
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
TreeNode tn = tree.SelectNodes().OnCurrentSite().Path("/Articles/Coffee-Beverages-Explained").FirstObject;
Response.Write(tn.GetStringValue("DocumentPageDescription", string.Empty));
谢谢你的建议。我认为我的问题是关于[下面](https://devnet.kentico.com/questions/getting-the-metadata-of-a-page-via-expression)。如果自定义页面类型页面设置为从父类继承,则结果会返回为空。我可以通过“DocumentContext.CurrentTitle”和“DocumentContext.CurrentDescription”获得继承情况下的父元数据值。当不继承时,通过'TreeNode'对象上的'GetStringValue()'获取值可以正常工作。谢谢! –
我看到了,因为从父项继承时,该项目的描述列中没有存储实际数据,因此GetValue或GetStringVlaue将为空。 – Rui
请不要在这里发布代码。试着解释为什么这能解决问题。 – loki