Как найти поля, определенные в форме (и прочитать их значения)? - PullRequest
0 голосов
/ 29 октября 2018

Мне нужно отобразить ответы на форму Sitefinity 10, управляемую конечными пользователями, где я не могу контролировать, какие и сколько полей добавляются в форму.

У меня есть доступ к GUID формы и записей формы, и мне удалось получить их оба, однако я не могу найти способ найти, какие поля были вставлены в форму и как получить значения записей .

Что у меня так далеко:

Guid formId = TODO; // Comes from outside.
Guid entryId = TODO; // Comes from outside.
FormsManager manager = FormsManager.GetManager();
FormDescription description = manager.GetForm(formId);
FormEntry entry = manager.GetFormEntry(description.EntriesTypeName, entryId);

Я мог только найти обсуждение на форумах Sitefinity по этому поводу, но, похоже, оно применимо только к предыдущей версии: в 10 кажется, что свойство Controls больше не содержит того, что говорится в посте.

Код, предложенный на форуме:

var fields =
    description
    .Controls
    .Where(control => control.Properties.Any(b => b.Name == "MetaField"))
    .Select(control => new
    {
        control.Id,
        Name =
            control
            .Properties
            .Single(property => property.Name == "MetaField")
            .ChildProperties
            .Single(property => property.Name == "FieldName")
            .Value,
        Title =
            control
            .Properties
            .Single(property => property.Name == "Title")
            .Value
    })
    .ToList();
...