使用MVC为Sitefinity小部件创建导出控制时出现问题
本文关键字:控制 问题 创建 MVC Sitefinity 小部 使用 | 更新日期: 2023-09-27 18:27:14
我正在为一个基于MVC的Sitefinity小部件开发Controller类,该小部件旨在获取所有页面内容并将其导出为JSON格式以供以后使用。问题是,当我尝试添加到pageArray变量时,我在Visual Studio中遇到一个错误:与"System.Collections.Generic.List.add(System.Web.UI.Page)"匹配的最佳重载方法包含一些无效参数。我不知道为什么会出现这个错误。
以下是ExportController类中出现的函数:
public ActionResult Index()
{
List<Page> pageArray = new List<Page>();
//// Use Sitefinity API get all pages
IQueryable<PageNode> pageNodes = App.WorkWith().Pages().Where(pN => (pN.Page != null && pN.Page.Status == ContentLifecycleStatus.Live)).Get();
foreach (var page in pageNodes)
pageArray.Add(page);//this is where I get the error message
return Json(pageArray, JsonRequestBehavior.AllowGet);
}
我承认我对ASP.NET MVC和Sitefinity API都是新手,我正在努力为我正在进行的项目尽快学习这两种技术
您需要将pageArray从System.Web.UI.Page更改为Telerik.Sitefinity.Pages.Model.PageNode
取决于您使用的Sitefinity版本。从7.0版本开始,以前位于PageData中的元数据信息现在位于PageNode中。
public ActionResult Index()
{
List<PageNode> pageArray = new List<PageNode>();
//// Use Sitefinity API get all pages
IQueryable<PageNode> pageNodes = App.WorkWith().Pages().Where(pN => (pN.Page != null && pN.Page.Status == ContentLifecycleStatus.Live)).Get();
foreach (var page in pageNodes)
pageArray.Add(page);
return Json(pageArray, JsonRequestBehavior.AllowGet);
}
您可以使用Fluent API,也可以使用Native API,如下面的
var pageManager = PageManager.GetManager();
pageManager.Provider.SuppressSecurityChecks = true;
var rootPages = pageManager.GetPageNodes()
.AsEnumerable()
.Where(p => !p.IsBackend && p.Parent != null && p.Parent.Title.ToLower() == "pages" && p.ShowInNavigation && p.ApprovalWorkflowState == "Published")
.OrderBy(p => p.Ordinal)
.ToList();