В SharePoint есть несколько вариантов хранения пользовательских данных, разной степени "правильности" и удобства.
Самый просто вариант - это, конечно, куки, которые в SharePoint, к и в любом веб-сайте никто не отменял. На всякий случай напомню как работать с куками в ASP.NET:
//Записываем данные HttpCookie myCookie = new HttpCookie("MyKey"); myCookie.Value = someData; myCookie.Expires = DateTime.Now.AddDays(1000); Response.Cookies.Add(myCookie); //Читаем данные if (Request.Cookies["MyKey"] != null) { string someData = Request.Cookies["MyKey"].Value.ToString(); } //Удаляем куку устанавливая куку с просроченным временем истечения. Данные нам в этом случае неважны, поэтому просто "" HttpCookie myCookie = new HttpCookie("MyKey"); myCookie.Value = ""; myCookie.Expires = DateTime.Now.AddDays(-1000); Response.Cookies.Add(myCookie);
Второй вариант - использования свойства Properties объекта SPWeb. Если решите использовать этот способ имейте ввиду, что все, что вы добавляете в Properties автоматически дублируется в свойстве AllProperties, но с ключом состоящим только из маленьких букв.
// Добавляем свойство web.Properties["MyKey"] = value; web.Update(); web.Properties.Update(); // Читаем свойство var value = web.Properties["MyKey"]; // Удаляем свойство web.AllProperties.Remove("mykey"); web.Properties["MyKey"] = null; web.Update(); web.Properties.Update();
Ни один из этих двух способов не дает вам возможности сохранять большие объекты, и снижает производительность за счет сериализации/десериализации в случае сложных объектов (которую вы должны делать сами) или боксинга/анбоксинга в случае простых типов.
Третий способ (самый, пожалуй, идеологически неправильный из всех) - хранение данных в файле.
if (File.Exists(@"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\projectWebPart.txt")) { using (StreamReader configFile = new StreamReader(@"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\MyConfigFile.config")) { string[] myData = configFile.ReadLine().Split('='); //Если у нас в файле есть строка вида MyKey=blablabla //то в myDaya[0] у нас будет MyKey, а в myDaya[1] - blablabla //каждую строку можно запихнуть, допустим в List> и потом с эти работать } }
Ну а самый идеологически правильный способ, хотя, менее удобный - использование SPPersistedObject. Про этот способ с подробно напишу отдельно завтра. :)
Комментариев нет:
Отправить комментарий