В 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. Про этот способ с подробно напишу отдельно завтра. :)
Комментариев нет:
Отправить комментарий