Использование механизма рендеринга aspx для генерации не-HTML

StackOverflow https://stackoverflow.com/questions/227132

Вопрос

Можно ли использовать механизм создания шаблонов asp (с классом с частичным кодом, dynamic <% ...%> блоки и тому подобное) Для генерации не HTML?Я хочу иметь чистый и обслуживаемый способ динамической генерации кода.(В частности, я хочу сгенерировать код LaTeX, заполненный значениями из базы данных.)

В настоящее время мои шаблоны LaTeX представляют собой строки ресурсов с заполнителями, которые я строю.замените значениями базы данных.Это решение быстро стало очень сложным в обслуживании и чистке.Я бы действительно хотел использовать динамические блоки из разметки aspx, но я не уверен: а) сработает ли aspx, если выходные данные не являются HTML, или б) как на самом деле отобразить результат в файле .tex.

Сам генерирующий код находится в C# .dll.Мы используем .NET 3.5

Возможно ли это?Заранее благодарю.

Это было полезно?

Решение

С помощью шаблонов T4, которые поставляются с Visual Studio 2008 изначально или с Visual Studio 2005 SDK, вы можете практически сгенерировать все, что захотите.

Вы можете получить более подробную информацию по следующим ссылкам:

Я почти уверен, что все эти ссылки - хорошее начало вашего поиска.

Если вы хотите создавать шаблоны T4 вне Visual Studio, существует пользовательская задача MSBuild для вызова шаблона T4 (Ссылка)

Вот пример кода "Execute" задачи MSBuild. Нажмите здесь, чтобы ознакомиться с исходным кодом:

public override bool Execute()
{
    bool success = false;

    //read in the template:
    string template = File.ReadAllText(this.TemplatePath);

    //replace tags with property and item group values:
    ProjectHelper helper = new ProjectHelper(this);
    template = helper.ResolveProjectItems(template);

    //copy the template to a temp file:
    this._tempFilePath = Path.GetTempFileName();
    File.WriteAllText(this._tempFilePath, template);

    //shell out to the exe:
    ProcessHelper.Run(this, TextTransform.ToolPath, TextTransform.ExeName, string.Format(TextTransform.ArgumentFormat, this.OutputPath, this._tempFilePath));
    success = true;

    return success;
}

Другие советы

Я не понимаю, почему нет. Кто-то, кого я знал на предыдущем задании, создал генератор обертки базы данных, используя страницы ASP.NET и элемент управления повторителем для вставки свойств. Затем он записал содержимое документа в исходный файл.

Если вы беспокоитесь о том, что ASP.NET подойдет, вы можете просто создать очень ограниченный контрольный пример и убедиться в этом сами. Не нужно много времени, чтобы проверить теорию и сообщить, соответствует ли она вашим потребностям.

Это, конечно, возможно. Большинство серверных элементов управления будут отключены, поскольку они будут автоматически генерировать HTML-разметку. Но вы можете привязать данные на странице и использовать выражения привязки данных. Visual Studio, несомненно, будет жаловаться на неверную разметку.

Затем вы должны запустить свои страницы через Cassini или конвейер ASP.NET, чтобы получить вывод. У меня где-то есть проводка для модульного тестирования, и это удивительно легко.

Идея лучше , вероятно, заключалась бы в использовании генератора кода. Что-то вроде CodeSmith должно работать хорошо, или даже встроенная в Visual Studio T4 дает вам большую гибкость, не пытаясь привязать вас к HTML.

Для генерации кода вы должны взглянуть на функции шаблонов T4. Он использует синтаксис, похожий на ASP.Net.

См. сообщение Скотта Хансельманса: http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx

Да, вы можете. Просто создайте стандартную страницу .aspx, удалите весь HTML-код и разместите любой контент на странице. Тогда вы можете использовать & Lt;%% & Gt; теги для размещения динамического контента на странице. И, как сказал Джейсон З, вы можете использовать элемент управления Repeater для перебора коллекций элементов, перечисляемых в & Quot; page & Quot ;. Кроме того, вы не сможете использовать все остальные серверные элементы управления, поскольку они генерируют HTML, но вы по-прежнему можете создавать свой собственный серверный элемент управления и / или пользовательские элементы управления по мере необходимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top