Question

Est-il possible d'utiliser le moteur de modélisation ASP (avec la classe code-behind partielle, dynamique <% ...% > blocks et autres) pour générer du code non HTML? Je veux avoir un moyen propre et maintenable de générer du code de manière dynamique. (Plus précisément, je souhaite générer du code LaTeX contenant les valeurs d’une base de données.)

Actuellement, mes modèles LaTeX sont des chaînes de ressources avec des espaces réservés que je string.replace avec les valeurs de la base de données. Cette solution est rapidement devenue très difficile à entretenir et à nettoyer. J'aimerais vraiment utiliser les blocs dynamiques du balisage aspx, mais je ne suis pas sûr (a) que aspx conviendra mieux si la sortie n'est pas au format HTML ou b) comment rendre le résultat dans un fichier .tex .

Le code générateur lui-même est situé dans un fichier c # .dll. Nous utilisons .NET 3.5

Est-ce possible? Merci d'avance.

Était-ce utile?

La solution

Le modèle T4 fourni avec Visual Studio 2008 en mode natif ou avec le Kit de développement logiciel (SDK) de Visual Studio 2005 permet de générer à peu près tout ce que vous voulez.

Vous pouvez avoir plus d'informations sur les liens suivants:

Je suis presque sûr que tous ces liens sont un bon début pour votre quête.

Si vous souhaitez générer des modèles T4 en dehors de Visual Studio, une tâche MSBuild personnalisée permet d'appeler un modèle T4 ( lien )

Voici un exemple de & "Execute &"; code de la tâche MSBuild. Cliquez ici pour le code source :

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

Autres conseils

Je ne vois pas pourquoi pas. Quelqu'un que je connaissais lors d'un travail précédent a créé un générateur de wrapper de base de données à l'aide de pages ASP.NET et du contrôle de répéteur pour insérer des propriétés. Il a ensuite écrit le contenu du document dans un fichier source.

Si ASP.NET vous inquiète, vous pouvez simplement créer un scénario de test très limité et voir par vous-même. Ne prenez pas beaucoup de temps pour tester une théorie et vous dire si elle répond à vos besoins.

C'est certainement possible. La plupart des contrôles de serveur seront supprimés, car ils émettront automatiquement un balisage HTML. Cependant, vous pouvez associer des données à la page et utiliser des expressions de liaison de données. Visual Studio va sans aucun doute se plaindre du balisage invalide.

Vous devez ensuite exécuter vos pages via Cassini ou le pipeline ASP.NET pour obtenir le résultat. J'ai un harnais de test unitaire quelque part qui le fait, et c'est étonnamment facile.

Une meilleure idée, cependant, consisterait probablement à utiliser un générateur de code. Quelque chose comme CodeSmith devrait fonctionner correctement, ou même dans celui de Visual Studio, Le T4 vous donne beaucoup de flexibilité sans essayer de vous lier au HTML.

Pour la génération de code, vous devriez jeter un coup d’œil sur les fonctionnalités de modèles T4. Il utilise une syntaxe similaire à ASP.Net.

Voir Scott Hanselmans Post: http://www.hanselman.com/blog- >

Oui, vous le pouvez. Créez simplement une page .aspx standard, supprimez tout le code HTML et placez le contenu de votre choix dans la page. Ensuite, vous pouvez utiliser & Lt;%% & Gt; balises pour placer du contenu dynamique dans la page. Et, comme l'a dit Jason Z, vous pouvez utiliser le contrôle Repeater pour parcourir des collections d'éléments à répertorier dans la & Page & «; De plus, vous ne pourrez pas utiliser tous les autres contrôles serveur car ils génèrent du HTML, mais vous pouvez toujours créer votre propre contrôle serveur et / ou contrôles utilisateur si nécessaire.

scroll top