2010-07-02 5 views
1

Je suis nouveau sur .net, et j'ai remarqué que lorsque je consulte mon code source HTML généré par une application .net, les retours chariot sont supprimés de la balise principale quand il a l'attribut runat="server" dessus.ASP.NET runat = le serveur supprime les retours chariot de la balise principale

Je supprime le runat="server" et les retours ... return.

Cela semble vraiment désagréable lorsque vous avez quelques fichiers javascript et css dans votre en-tête, car il finit par faire tout le contenu de la balise head 1 grande ligne.

Vous vous demandez simplement s'il existe un moyen de contrôler cela ou de dire à .net thru de ne pas modifier la sortie?

Merci!

+0

Je me demandais juste si vous ou quelqu'un d'autre avez trouvé la solution pour résoudre le tag Titre n'étant pas en ligne. Merci. – Manu

Répondre

1

Vous pouvez créer un ControlAdapter. Ajouter un fichier Head.Browser dans le répertoire App_Browsers avec le contenu:

<browsers> 
    <browser refID="Default"> 
    <controlAdapters> 
     <adapter controlType="System.Web.UI.HtmlControls.HtmlHead" 
       adapterType="MyNamespace.MyHeadAdapter, MyAssembly" /> 
    </controlAdapters> 
    </browser> 
</browsers> 

La source de l'adaptateur:

public class MyHeadAdapter: ControlAdapter 
    { 
     protected override void Render(HtmlTextWriter writer) 
     { 
      // base.Render(writer); 
      // do the fix here 
     } 
    } 

PS: Je ne l'ai pas testé ce code, mais ont utilisé presque la même chose pour réécrire l'action du formulaire s'attribue avec une classe personnalisée dérivée de HtmlTextWriter.

0

Je suis tombé sur cet article en cherchant à résoudre ce problème moi-même.

Il y avait 2 problèmes que je remarquai lorsque l'attribut runat = serveur a été mis ... 1) retour chariot entre les balises meta ont été supprimés afin que tous les meta tags ont été groupés ensemble sur une ligne 2) la balise de titre était joliment foiré (DVD l'a décrit parfaitement)

Le problème que j'avais était que je devais définir dynamiquement le titre de la page, meta description et meta keywords. Pour définir dynamiquement le titre de la page, l'attribut runat = server doit être défini.

Ma solution;

  1. Retirez le runat = attribut serveur à partir de la balise head
  2. Ajouter le runat = serveur attirbute à la balise titre
  3. Dans le code derrière, faire référence à la balise de titre et définissez la propriété .InnerText

J'espère que cela vous aide.

Questions connexes