让我们开始编码

这里我以一个基本的新闻应用程序为例

  1. 打开 SharePoint 开发人员站点并创建一个列表来存储我们的新闻文章

  2. 创建自定义列表并添加 3 个列 Body,Summery,ThumbnailImageUrl http://i.stack.imgur.com/mzfSL.jpg

  3. 返回我们的 SharePoint 应用程序,打开 AppManifest.xml 文件,单击权限选项卡并为网站集授予读取权限并保存。 http://i.stack.imgur.com/tJ5JI.jpg

  4. 从 Web 应用程序打开 HomeController,在我的例子中是一个 MVC 应用程序。如果你要创建一个 webform 应用程序,那么你的代码应该在 default.aspx.cs 页面中

  5. 以下是从列表中获取最新消息的代码段。这就是我们的索引页面应该如何。

    [SharePointContextFilter]
    public ActionResult Index()
    {
        User spUser = null;
    
        var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext);
        List<NewsList> newsList = new List<NewsList>();
        using (var clientContext = spContext.CreateUserClientContextForSPHost())
        {
            if (clientContext != null)
            {
                spUser = clientContext.Web.CurrentUser;
    
                clientContext.Load(spUser, user => user.Title);
    
                clientContext.ExecuteQuery();
    
                ViewBag.UserName = spUser.Title;
    
                List lst = clientContext.Web.Lists.GetByTitle("News");
                CamlQuery queryNews = CamlQuery.CreateAllItemsQuery(10);
                ListItemCollection newsItems = lst.GetItems(queryNews);
                clientContext.Load(newsItems, includes => includes.Include(i => i.Id, i => i.DisplayName, i => i["ThumbnailImageUrl"], i => i["Summery"]));
    
                clientContext.ExecuteQuery();
    
                if (newsItems != null)
                {
                    foreach (var lstProductItem in newsItems)
                    {
                        newsList.Add(
                            new NewsList
                            {
                                Id = Convert.ToInt32(lstProductItem.Id.ToString()),
                                Title = lstProductItem.DisplayName.ToString(),
                                Summery = lstProductItem["Summery"].ToString(),
                                Thumbnail = lstProductItem["ThumbnailImageUrl"].ToString()
                            });
                    }
                }
            }
        }
    
        return View(newsList);
    }
    
  6. 现在右键单击 Index 并单击 Add View。然后单击添加

http://i.stack.imgur.com/v8I6G.jpg

  1. 现在从 Views> Home 目录打开 Index.cshtml 文件 ****

  2. 下面是 index.cshtml 文件的代码片段

    @model List<SharePointNewsAppWeb.Models.NewsList>
     @{
     ViewBag.Title = "My News - browse latest news";
    }
     <br />
     @foreach (var item in Model)
     {
     <div class="row panel panel-default">
      <div class="col-xs-3">
        <a href="/home/aticle?ArticleId=@item.Id">
            <img class="img-responsive" style="max-height:200px;max-width:100%;" src="@item.Thumbnail" alt="@item.Title" />
        </a>
    </div>
    <div class="col-xs-9 panel-default">
        <div class="panel-heading">
            <h4><a href="/home/aticle?ArticleId=@item.Id">@item.Title.ToUpper()</a></h4>
        </div>
        <div class="panel-body">
            <p>@item.Summery</p>
        </div>
    </div>
    
  3. 右键单击解决方案中的 Model 文件夹并添加 CS 类文件。添加以下模型类

     using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Web;
    
     namespace SharePointNewsAppWeb.Models
    {
      public class NewsApp
       {
    
       }
     public class NewsList
      {
    
    public int Id { get; set; }
    
    public string Title { get; set; }
    
    public string Summery { get; set; }
    
    public string Thumbnail { get; set; }
     }
     public class FullArticle
     {
    
      public int Id { get; set; }
    
      public string Title { get; set; }
    
      public string Body { get; set; }
    
     }
    }
    
  4. 使用 F5 键部署和运行加载项。如果你看到安全警报窗口,要求你信任自签名的 Localhost 证书,请选择

现在第一个应用程序准备就绪