SharePoint Online Addin Development-Could not fetch a certain key value from the Web Property Bag(AllProperties.FieldValues)

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/211503

Pergunta

I have a requirement where in I need to develop a web page using SharePoint Addin in Visual Studio such that user enters certain configuration data . This data that has to be stored on the SharePoint Online Web Property Bag i.e AllProperties.FieldValues. The code block below shows what I have implemented on a button click event of the page.

 var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
var clientContext = spContext.CreateUserClientContextForSPHost();
var ConfigDataString=TextBox1.Text;
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();                
web.AllProperties.FieldValues.Add("Config", ConfigDataString);                
web.Update();
clientContext.ExecuteQuery();

But when I tried to fetch the same key value again by implementing the following code on another button click, I could not find the key on the property field values.

var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
var clientContext = spContext.CreateUserClientContextForSPHost();
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();                
var configData = web.AllProperties.FieldValues["Config"].ToString();//Exception here

Then, I tried to update other properties of the Web such as Web Title or Description and I could successfully post the changes to the SharePoint Online.I have same code block for SharePoint On premise server and I could successfully store data on the RootWeb or Site Properties. Did I miss anything when it comes to SharePoint Online? I have a speculation that the problem is with the client context. Please let me know where I can see the properties of the Web or SiteCollection in the SharePoint Online interface.

Foi útil?

Solução

To add values to property bag, try the below code:

Web web = context.Site.RootWeb; //change as per your web object

context.Load(web, w=>web.AllProperties);
context.ExecuteQuery();  

var allProperties = web.AllProperties;
allProperties["Config"] = "some value";

web.Update();
context.ExecuteQuery();

To retrieve the value, you need to use below code:

Web web = context.Site.RootWeb; //change as per your web object
context.Load(web, w => w.AllProperties);
context.ExecuteQuery();

var propValue = web.AllProperties["Config"];

Outras dicas

Try adding properties by doing the following:

var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
var clientContext = spContext.CreateUserClientContextForSPHost();
var ConfigDataString=TextBox1.Text;
var web = clientContext.Web;
web.AllProperties["Config"] = ConfigDataString;
web.Update();
clientContext.ExecuteQuery();

This was how I was setting properties in one of my apps. Not sure why it works but not .Add()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top