ドキュメントライブラリのカスタムアップロードページがあります。アップロードページには、1人のピッカーフィールドがあります(ユーザーは複数のユーザーIDを入力できます)Design for People Picker
<SharePoint:PeopleEditor ID="pplApprovers" runat="server" Width="250px" Height="25px" MultiSelect="true"/>
ピープルピッカーからempidを取得するには、以下のコードを使用します
public ArrayList approversArray;
public SPFieldUserValueCollection approversCollection;
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
ArrayList aAccount1 = new ArrayList();
approversArray= pplApprovers.Entities;
approversCollection = new SPFieldUserValueCollection();
SPUser user;
SPGroup group;
SPUser currentUser;
SPWeb web=SPControl.GetContextWeb(Context);
currentUser=web.CurrentUser;
ArrayList aAccount = new ArrayList();
aAccount = pplApprovers.Accounts;
ArrayList peEntities = pplApprovers.Entities;
approversArray = pplApprovers.ResolvedEntities;
foreach (PickerEntity entity in approversArray)
{
if (entity.EntityData["PrincipalType"].ToString() == "SharePointGroup")
{
group = web.SiteGroups[entity.Key];
approversCollection.Add(new SPFieldUserValue(web,group.ID, group.Name));
}
else
{
//handles SecurityGroup, Distribution List and User
user = web.EnsureUser(entity.Key);
approversCollection.Add(new SPFieldUserValue(web,user.ID, user.Name));
}
}
});
catch (Exception ex)
{
// Manage error event
}
この値を取得した後、ドキュメントライブラリに挿入します。
item.Item["Account Partner"]="approversCollection";
ただし、アップロードボタンをクリックすると、サイト管理者アクセス権を持つ唯一のユーザーがファイルを正常にアップロードできますが、管理者アクセス権を持たない他のユーザーは https://web/_layouts/AccessDenied.aspx ページにリダイレクトされます。
SPSecurity.RunWithElevatedPrivilegesを使用してみましたが、成功しませんでした...
この問題を解決する方法、またはピープルピッカーを使用する別の方法を教えてください