La creación de una sección de perfil de usuario mediante programación
-
16-10-2019 - |
Pregunta
Estoy intentando crear una nueva sección de perfil de usuario mediante programación, pero sin éxito. El problema es con el href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.property.type.aspx" rel="nofollow"> propiedad de tipo .
Cuando puedo especificar un valor como "sección" de este, recibo la excepción Tipo de datos no está disponible para la sección . Cuando no se especifica un valor, recibo la excepción UserProfilePropertySettings objeto debe tener un conjunto de valores para el 'Tipo' .
Aquí está el código:
var userProfileConfigManager = new UserProfileConfigManager(ServerContext.GetContext(site));
var propertyCollection = userProfileConfigManager.GetPropertiesWithSection();
var newProperty = propertyCollection.Create(true);
newProperty.Name = "NewSection";
newProperty.DisplayName = "NewSection";
newProperty.Type = "section"; // or not set
newProperty.IsUserEditable = false;
newProperty.Length = 0;
newProperty.DefaultPrivacy = 0;
newProperty.PrivacyPolicy = 0;
newProperty.IsSearchable = false;
newProperty.IsVisibleOnEditor = false;
newProperty.IsVisibleOnViewer = false;
newProperty.Separator = MultiValueSeparator.Unknown;
newProperty.Commit();
¿Alguna idea?
Solución
Mi error - la segunda excepción fue mi propia debido a la comprobación de entrada de exceso de celo! Sin embargo, el código también era incorrecta. Se debería leer:
var userProfileConfigManager = new UserProfileConfigManager(ServerContext.GetContext(site));
var propertyCollection = userProfileConfigManager.GetPropertiesWithSection();
var newProperty = propertyCollection.Create(true);
newProperty.Name = "NewSection";
newProperty.DisplayName = "NewSection";
newProperty.Commit();
Otros consejos
También es una buena idea para establecer el orden de la sección:
// order being the absolute position you want to place section in property list
propertyCollection.SetDisplayOrderBySectionName(newProperty.Name,order);
propertyCollection.CommitDisplayOrder();
Esto se hace generalmente por qué hago esto mediante programación, en primer lugar, por lo que no tengo que hacer clic arriba / abajo 1000 veces dentro de la lista de asignación de propiedades de perfil de usuario en el SSP :-) - Anders Rask 0 segundos
hth Anders Rask