Мне нужно отобразить ответы на форму 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();