2010-09-02 4 views
0

j'ai hérité (sans jeu de mots) un vieux projet ASP.NET 1.1 qui est maintenant .NET 3.5. Il est conçu avec une classe de base qui hérite de PageBase. Toutes les pages aspx suivantes héritent de cette base de page personnalisée. Il travaille actuellement en générant un tas de texte HTML dans LiteralControls pour les en-têtes et des barres de navigation et le laisser tomber dans un HtmlGenericControl (dans ce cas, appelé « page »), qui est ensuite affiché sur la page en utilisant this.Controls.Add(page); Cela fonctionne en fait, à l'exception la sortie suivante:html de sortie à la page en classe PageBase hérité

<span> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
     ... 
    </html> 
</span> 

ne sont pas censés de ceux empan d'être là évidemment, mais ils viennent du HtmlGenericControl, qui par défaut à un tagName de durée. Cela provoque un comportement étrange dans IE en ce qui concerne les contrôles de centrage sur la page. Fondamentalement, je sais que je devrais utiliser masterpages pour ce genre de chose, mais je n'ai pas le temps de tout changer, et je ne suis pas encore un expert ASP.NET où je sais exactement comment résoudre ce problème. Y at-il une autre façon d'envoyer un texte littéral directement à la sortie HTML sans l'emballer dans un contrôle? Il est évident que je dois le Doctype être la première chose sur la page; rien ne l'envelopper. Merci!

Répondre

1

Peut-on utiliser un LiteralControl au lieu de HtmlGenericControl? Je ne pense pas que ceux-ci décorent la sortie avec des tags environnants.

0

pire des cas, utilisez un HttpModule pour modifier la sortie et se débarrasser des portées.

Questions connexes