Кажется, что решение проблемы было немного сложнее. Прежде всего, я переместил всю информацию о профиле из сеанса в Profile
пользователя Sitecore.Context.User
. Для этого необходимо было реализовать собственный класс профиля пользователя. Используя этот подход, я знаю, что нужно предварительно загружать поля формы из этого пользовательского профиля вместо сеанса.
Для этого я создал папку под деревом содержимого под названием «Переменные профиля», которая представляла свойства пользовательского профиля, которые необходимо было прочитать, в точечной нотации. Например: { DisplayName: "Home Telephone", Value: "ContactDetails.HomeTelephone" }
.
Наконец, я создал настраиваемый тип поля WFFM, основанный на типе поля «Однострочный текст», который принимает еще одно свойство, PreloadField
, беря значения из узла «Переменные профиля», и OnInit
настраиваемого типа поля, который я считываю из пользовательского контекста. profile, используя отражение значения свойства, хранящегося в PreloadField
, и установите это значение для свойства Text
текстового поля.
Надеюсь, это поможет кому-то еще в поисках чего-то подобного.
person
George
schedule
28.01.2013