目前,我在CMS中有几种自定义页面类型。为了在处理文档时具有类型安全性,我使用内置的代码生成器为每个页面类型创建类。例如,我已经叫白皮书和Kentico代码生成的网页类型生成两个类:如何为当前文档使用自定义页面类型
public partial class Whitepaper : TreeNode { }
public partial class WhitepaperProvider { }
这些类工作的伟大,如果我直接在特定文档使用提供如查询:
WhitepaperProvider.GetWhitepapers().TopN(10);
但是,我希望能够为当前文档使用Whitepaper
类,而不必使用WhitepaperProvider
重新查询文档。在这种情况下,我有一个自定义页面模板白皮书,并在后面的代码我希望能够使用自定义类是:
// This is what I'm using
TreeNode currentDocument = DocumentContext.CurrentDocument;
var summary = currentDocument.GetStringValue("Summary", string.Empty);
// This is what I'd like to use, because I know the template is for whitepapers
Whitepaper currentWhitepaperDocument = // what goes here?
summary = currentWhitepaperDocument.Summary;
如何使用我的自定义页面类型的类当前文档?
UPDATE
的答案使用as
作品只要一类被注册为当前页面类型提到。我没有想到这个工作,因为我认为DocumentContext.CurrentDocument总是返回一个TreeNode(因此你会有一个逆变问题);如果有一个为页面类型注册的类,它将返回一个类的实例,从而允许您使用as
。
你试过投当前文档作为您的自定义类?:白皮书currentWhitepaperDocument = DocumentContext。 CurrentDocument作为白皮书 –