为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
阿波罗的战车 2021-11-14 15:05:26
所以...我创建了一个 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 问题,所以我不知道从哪里开始。
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我从调试中看到的几件事。

我会将代码 GetItems() 移动到单独的 Helper 类,然后在其中放置一个断点以查看它是否正在触发。

如果您没有收到任何错误并且返回数据始终为空,那么这意味着代码的某些部分没有得到执行(同步或异步问题?)


查看完整回答
反对 回复 2021-11-14
?
千万里不及你

TA贡献1784条经验 获得超9个赞

好的,所以我解决了这个问题(与这个问题斗争了几个小时,这太简单了,我现在想打自己)。

如果有人遇到这个 ->

为什么我的列表没有得到任何项目(即使没有错误)-> 没有给予应用程序足够的权限。通过提供完整列表权限和完整 Web 权限来修复。

为什么我的 foreach 出现错误 -> 显然一列有不同的名称。我通过尝试这段代码发现了这一点(这显然更好,因为它会引发错误,而不像从列表中获取所有内容)->

            clientContext.Load(irfListitems, 
                itemss => itemss.Include(
                    item => item["Title"],
                    item => item["StartDate"],
                    item => item["EndDate"]
                    ));


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信