C# MVC 显示共享点列表中的项目

所以...我创建了一个 Sharepoint 插件 (C# MVC) 来获取列表信息和创建/更新项目。我过去已经完成了创建/更新,现在不打算解决这个问题。


我的问题是将列表项显示到 MVC 视图中。到目前为止我做了什么 - >


我创建了一个模型(类),其中包含我将在表中显示的信息:


public class IRFItem

{

    public string Title { get; set; }

    public string StartDate { get; set; }

    public string EndDate { get; set; }

    //public string CreatedBy { get; set; }

}

在同一个文件中(为了保持我的测试紧凑),我还添加了一种获取我需要的项目的方法:


     public static List<IRFItem> GetItems(SharePointContext spContext, CamlQuery camlQuery)

    {


        List<IRFItem> items = new List<IRFItem>();

        //var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext.Current);


        using (var clientContext = spContext.CreateUserClientContextForSPAppWeb())

        {

            if (clientContext != null)

            {

                List irfList = clientContext.Web.Lists.GetByTitle("IRF");

                ListItemCollection irfListItems = irfList.GetItems(camlQuery);

                clientContext.Load(irfListItems);

                clientContext.ExecuteQuery();

                if (irfListItems != null)

                {

                    foreach (var irfListItem in irfListItems)

                    {

                    items.Add(

                        new IRFItem

                        {

                            Title = irfListItem["Title"].ToString(),

                            StartDate = irfListItem["StartDate"].ToString(),

                            EndDate = irfListItem["EndDate"].ToString(),

                        });

                    }

                }


我没有收到任何错误,但我的表总是空的...我什至在 GetItems 中添加了 else 部分来创建一个显示为空的项目,这样我就知道它是与共享点相关的问题还是其他问题。老实说,我的 MVC 经验并不多(一周前才开始学习,但我是那种边做边学的人)。


有没有人看到这里有任何问题?我已经遵循了这个教程,并做了我自己的小改动。


参考:https : //www.chakkaradeep.com/2013/10/18/building-apps-for-sharepoint-with-mvc/


任何类型的提示都将受到高度赞赏,谢谢。


编辑:我通过给应用程序更多权限(为了安全起见列出和 web)跳过了错误,我正在返回结果,但是我无法创建项目,因为 executeQuery 没有按时完成。知道如何延迟吗?我记得我在过去的任务中遇到了一个 bigggg 问题,所以我不知道从哪里开始。


阿波罗的战车
浏览 147回答 2
2回答

慕无忌1623718

我从调试中看到的几件事。我会将代码 GetItems() 移动到单独的 Helper 类,然后在其中放置一个断点以查看它是否正在触发。如果您没有收到任何错误并且返回数据始终为空,那么这意味着代码的某些部分没有得到执行(同步或异步问题?)

千万里不及你

好的,所以我解决了这个问题(与这个问题斗争了几个小时,这太简单了,我现在想打自己)。如果有人遇到这个 ->为什么我的列表没有得到任何项目(即使没有错误)-> 没有给予应用程序足够的权限。通过提供完整列表权限和完整 Web 权限来修复。为什么我的 foreach 出现错误 -> 显然一列有不同的名称。我通过尝试这段代码发现了这一点(这显然更好,因为它会引发错误,而不像从列表中获取所有内容)->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientContext.Load(irfListitems,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemss&nbsp;=>&nbsp;itemss.Include( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item&nbsp;=>&nbsp;item["Title"], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item&nbsp;=>&nbsp;item["StartDate"], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item&nbsp;=>&nbsp;item["EndDate"] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;));
打开App,查看更多内容
随时随地看视频慕课网APP