Шаблонный движок.Net с выводом графов объектов, а не строк

Я хотел бы знать, есть ли какой-либо шаблонизатор, который используется для создания графа объектов? Есть много, чтобы создать HTML или другое содержимое строки. Но я бы хотел шаблонизатор, который выплевывает объекты. Так сказать препроцессор.

У меня есть приложение, которому нужны какие-то предопределенные графы объектов, которые используются для визуализации определенного виджета страницы. Например, у меня есть панель инструментов на моих страницах, но каждая страница имеет свою панель инструментов. Это может выглядеть очень похоже. но, например, кнопка Добавить будет указывать на другой URL-адрес на одной странице, чем на другой.

Пример граф объекта (часть его):

IList<ToolbarItem> toolbar = new List<ToolbarItem> {
    new ToolbarButton {
        Text = PageResources.NewText,
        Url = Url.Action("Add", "Items"),
        Icon = ToolbarIconType.New
    },
    new ToolbarSeparator(),
    new ToolbarDropDown {
        Text = PageResources.DropDownText,
        Icon = ToolbarIconType.Filter,
        Items = new List<ToolbarDropDownItem> {
            new ToolbarDropDownItem {
                Text = PageResources.FirstItem,
                Url = Url.Action("Whatever", "Filter")
            },
            new ToolbarDropDownItem {
                Text = PageResources.SecondItem,
                Url = Url.Action("BlahBlah", "Filter"),
                Icon = ToolbarIconType.Search
            },
            ...
        }
    },
    ...
};

Это статическое определение (с динамическими ресурсами и динамическими вызовами вспомогательных URL) может стать довольно длинным и сложным. Подумайте о ленточной панели инструментов, похожей на Word. Очень сложный и длинный.

Я хотел бы, чтобы эти шаблоны генерации объектов хранились в базе данных, и каждая страница могла бы читать свои собственные, шаблонизатор затем генерировал бы их и использовал бы определенный тип ресурса + ключ для помещения локализованных данных. То же самое было бы с действиями URL-адреса...

Нечто подобное делается при десериализации объекта (XML или JSON). но встроенные (де) технологии сериализации не поддерживают замены переменных, ссылки на ресурсы или аналогичные. Лучше всего будет поддерживать ссылки на ресурсы и лямбда-выражения.

Подводя итог: есть ли какой-либо движок / препроцессор шаблонов графа.net, который бы обеспечивал то, что мне нужно?

2 ответа

Решение

JSON сериализация

Я решил использовать библиотеку Json.Net главным образом потому, что написание строк JSON очень удобочитаемо для человека или, я бы лучше сказал, что веб-разработчик читабельно и легко поддерживается. Это очень похоже на обычный Javascript JSON, но с дополнительными синтаксическими сахарами (сохранение ссылок, сохранение типов и т. Д.)

Библиотека Json.NET является очень хорошим обновлением JavaScriptSerializer или DataContractSerializer классы.

Это очень интересный вопрос.

Я думаю, что один из вариантов будет генерировать XAML, а затем использовать XamlReader.Load ( см. MSDN) для загрузки дерева объектов (или графика), описанного XAML. Обратите внимание, что XAML можно использовать для создания любых объектов.NET, которые соответствуют некоторым базовым требованиям (например, имеют общедоступные свойства get / set и реализуют некоторый интерфейс, если они должны использоваться в качестве коллекций).

Кроме того, XAML является XML-документом, поэтому должна быть возможность использовать стандартные текстовые движки, которые могут создавать XML-файлы для генерации ваших XAML-документов.

Другие вопросы по тегам