public ActionResult AddSharedFieldAction([Bind(Include = "SelectedFieldId")] AddSharedFieldViewModel model) { var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { clientContext.Load(clientContext.Web, w => w.ContentTypes); clientContext.ExecuteQuery(); ContentType docSetContentType = clientContext.Web.ContentTypes.FirstOrDefault(ct => ct.Name == CONTENTTYPENAME); Field selectedField = clientContext.Web.Fields.GetById(model.SelectedFieldId); clientContext.Load(selectedField); clientContext.ExecuteQuery(); if (docSetContentType != null && selectedField.ServerObjectIsNull == false) { DocumentSetTemplate docSetTemplate = DocumentSetTemplate.GetDocumentSetTemplate(clientContext, docSetContentType); clientContext.Load(docSetTemplate, d => d.SharedFields); clientContext.ExecuteQuery(); if (!docSetTemplate.SharedFields.Contains(selectedField)) { docSetTemplate.SharedFields.Add(selectedField); docSetTemplate.Update(true); clientContext.ExecuteQuery(); } } } return(RedirectToAction("Index", new { SPHostUrl = SharePointContext.GetSPHostUrl(HttpContext.Request).AbsoluteUri })); }
public ActionResult AddSharedField() { AddSharedFieldViewModel model = new AddSharedFieldViewModel(); var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { if (clientContext != null) { Web web = clientContext.Web; clientContext.Load(web, w => w.ContentTypes, w => w.Fields); clientContext.ExecuteQuery(); ContentType docSetContentType = web.ContentTypes.FirstOrDefault(ct => ct.Name == CONTENTTYPENAME); if (docSetContentType != null) { clientContext.Load(docSetContentType, ct => ct.Fields); clientContext.ExecuteQuery(); List <FieldModel> fieldModels = new List <FieldModel>(); foreach (Field field in docSetContentType.Fields) { fieldModels.Add(new FieldModel() { Name = field.Title, Id = field.Id, Type = field.TypeAsString }); } ViewBag.SelectedFieldId = new SelectList(fieldModels, "Id", "Name", model.SelectedFieldId); } } } return(View("AddSharedField", model)); }