0

こんにちはMVCビューにドキュメントのリストを表示し、クリックしてダウンロードできるようにしたいです。私は以下に示すように自分で解決策を試みました。私は長い間これに苦労してきましたので、どんな提案でもいただければ幸いです。

namespace SharePointMVC.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
            DefaultModel Lists = new DefaultModel();
            string siteURL = "http://MYSPSSITE";
            string documentListName = "MY DOCUMENT LIBRARY";
            ListItemCollection listItems = null;
            using (ClientContext clientContext = new ClientContext(siteURL))
            {
                List documentsList = clientContext.Web.Lists.GetByTitle(documentListName);

                CamlQuery camlQuery = new CamlQuery(); ;
                camlQuery.ViewXml =
                    @"<View>

                     <Query>
                     <Where>
                     <Eq>
                     <FieldRef Name ='" + name + @"'/>

                     <Value Type ='" + type + "'>" + value + @"</Value>
                     </Eq>

                     </Where>
                     <RowLimit>" + rowLimit.ToString() + @"</RowLimit>

                     </Query>
                     </View>";

                listItems = documentsList.GetItems(camlQuery);

                clientContext.Load(documentsList);
                clientContext.Load(listItems);

                clientContext.ExecuteQuery();

            }

            return listItems;
        }

        private static ListItem GetDocumentFromSP(String documentName)
        {
            ListItemCollection listItems = GetListItemCollectionFromSP("FileLeafRef", documentName, "Text", 1);
            return (listItems != null && listItems.Count == 1) ? listItems[0] : null;
        }

        public Stream DownloadDocument(string SiteURL, string documentName)
        {
            ListItem item = GetDocumentFromSP(documentName);
            if (item != null)
            {
                using (ClientContext clientContext = new ClientContext(SiteUrl))
                {
                    FileInformation fileInformation = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, item["Outline.docx"].ToString());
                    return fileInformation.Stream;
                }
            }

            return null;
        }
4

1 に答える 1

0

要件があまり多くない場合(たとえば、魔法の5000ドキュメントマークをオーバーライドできる必要がある場合)、SPMetalを使用してLINQクエリを実行できます。これには制限があり、CAMLクエリほどパフォーマンスは高くありませんが、すべて同じように機能することに注意してください。

于 2012-12-20T09:43:04.853 に答える