Pergunta

É possível usar o motor de templates asp (Com o código-behind classe parcial, dinâmicas <% ...%> blocos e tal) para gerar não HTML? Quero ter uma maneira limpa e sustentável para gerar dinamicamente código. (Especificamente, eu quero gerar o código LaTeX preenchida com valores de um banco de dados.)

Actualmente os meus modelos de látex são seqüências de recursos com espaços reservados que eu String.Replace com os valores do banco de dados. Esta solução tornou-se rapidamente muito difícil de manter e limpar. Eu realmente gostaria de usar os blocos dinâmicos de aspx marcação, mas não tenho certeza a) se aspx vai ter um ataque quando a saída não é HTML, ou b) como realmente tornar o resultado em um arquivo .tex .

O próprio código de geração está localizada em um C # .dll. Estamos usando .NET 3.5

Isso é possível? Desde já, obrigado.

Foi útil?

Solução

O templates T4 que vem com o Visual Studio 2008 nativamente ou com o Visual Studio 2005 SDK, você pode muito bem gerar o que quiser.

Você pode ter mais informações sobre os links a seguir:

Eu tenho certeza que todos esses links é um bom começo para sua busca.

Se você deseja gerar T4 templates fora do Visual Studio, não há tarefa MSBuild personalizada para invocar um modelo de T4 ( link )

Aqui está um exemplo do código "Executar" da tarefa MSBuild. Clique aqui para obter o código-fonte :

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;
}

Outras dicas

Eu não vejo por que não. Alguém que eu conhecia em um trabalho anterior criou um gerador de invólucro banco de dados usando páginas ASP.NET e o controle do repetidor para inserir propriedades. Ele então escreveu o conteúdo do documento para um arquivo de origem.

Se você está preocupado com ASP.NET vai ter um ataque, você pode simplesmente criar um caso de teste muito limitado e veja por si mesmo. não deve demorar muito tempo para testar uma teoria e deixar você saber se ele atende às suas necessidades.

É certamente possível. A maioria dos controles de servidor estará fora, como eles vão automaticamente emitem HTML marcação. Mas, você pode vincular a página e usar expressões de ligação de dados. Visual Studio, sem dúvida reclamar marcação inválida.

Você então tem que executar suas páginas através de Cassini ou o pipeline ASP.NET para obter o resultado. Eu tenho um lugar arnês teste de unidade que faz isso, e é surpreendentemente fácil.

A melhor idéia, embora, provavelmente, seria a utilização de um gerador de código. Algo como CodeSmith deve funcionar bem, ou mesmo Visual Studio é construído em T4 lhe dá muita flexibilidade, enquanto não tentando amarrá-lo em HTML.

Para a geração de código que você deve ter um olhar para as características T4 templates. Ele usa uma sintaxe semelhante ao ASP.Net.

Veja Scott Hanselmans Post: http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx

Sim, pode. Basta criar uma página aspx padrão, apague todo o HTML e colocar o conteúdo que quiser na página. Então você pode usar <%%> tags para colocar conteúdo dinâmico dentro da página. E como Jason Z disse, você pode usar o controle Repeater para percorrer coleções de itens para listar na "página". Além disso, você não será capaz de usar todos os outros controles de servidor uma vez que geram HTML, mas você ainda pode criar seu próprio controle de servidor e / ou controles de usuário conforme necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top