Программно добавить утверждение в список

Я написал небольшой фрагмент кода, который добавляет заявку на сайт в Sharepoint. Я поступаю так:

using (SPSite site = new SPSite(url)) 
        { 
            using (SPWeb web = site.OpenWeb())
            { 
                SPClaimProviderManager claimMgr = SPClaimProviderManager.Local; 
                if (claimMgr != null) 
                {
                    SPClaim claim = new SPClaim(type, claim_name, Microsoft.IdentityModel.Claims.ClaimValueTypes.String, SPOriginalIssuers.Format(SPOriginalIssuerType.ClaimProvider, provider)); 
                    string userName = claimMgr.EncodeClaim(claim); 
                    SPUserInfo info = new SPUserInfo 
                    { LoginName = userName, 
                        Name = name }; 

                    SPRoleAssignment roleAssignment = new SPRoleAssignment(info.LoginName, info.Email, info.Name, info.Notes); 
                    roleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions["Read"]); 
                    web.RoleAssignments.Add(roleAssignment); 
                    web.Update(); 
                } 
            } 
        } 

Довольно просто, но я хотел бы добавить заявку в список, который я создал. К настоящему времени я использую SPSite и SPWeb для доступа к сайту, но мне нужно углубиться :), и я не могу найти способ сделать ...

Заранее спасибо!


person Gun    schedule 26.10.2011    source источник


Ответы (1)


Поскольку оба, SPWeb и SPList, наследуются от SPSecurableObject, все, что вам нужно сделать, это загрузить объект SPList для того списка, для которого вы хотите изменить разрешения.

SPList можно загрузить либо по URL-адресу, либо по заголовку списка:

SPList listByTitle = web.Lists["Tasks"];
SPList listByUrl = web.GetList("/server/relative/Lists/Tasks");

В вашем примере:

        using (SPSite site = new SPSite(url)) 
        { 
            using (SPWeb web = site.OpenWeb())
            { 
                SPClaimProviderManager claimMgr = SPClaimProviderManager.Local; 
                if (claimMgr != null) 
                {
                    SPClaim claim = new SPClaim(type, claim_name, Microsoft.IdentityModel.Claims.ClaimValueTypes.String, SPOriginalIssuers.Format(SPOriginalIssuerType.ClaimProvider, provider)); 
                    string userName = claimMgr.EncodeClaim(claim); 
                    SPUserInfo info = new SPUserInfo 
                    { LoginName = userName, 
                        Name = name }; 

                    SPRoleAssignment roleAssignment = new SPRoleAssignment(info.LoginName, info.Email, info.Name, info.Notes); 
                    roleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions["Read"]); 
                    // web.RoleAssignments.Add(roleAssignment); 
                    // web.Update(); 

                    SPList list = web.Lists["TheListTitle"];
                    list.RoleAssignments.Add(roleAssignment);
                } 
            } 
        } 

Не требуется обновлять веб-сайт или список после изменения назначений ролей.

person Stefan    schedule 26.10.2011
comment
вау, это просто ... Sharepoint очень нов для меня, и мы попросили меня поиграть с претензиями, поэтому я потерялся! Огромное спасибо за помощь! - person Gun; 26.10.2011