使用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);
}

使用MVC为Sitefinity小部件创建导出控制时出现问题

您可以使用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();