07. september 2004 - 00:31Der er
5 kommentarer og 1 løsning
Panel bliver udskrevet som table i Moz, men som div i IE
Hej E.
Jeg har skrevet følgende klasse:
public class RenderColoumn : Control { protected override void Render(HtmlTextWriter writer) { // Render the Top of the Coloumn Panel coloumnTop = new Panel(); coloumnTop.CssClass = "ColoumnTop"; coloumnTop.RenderBeginTag( writer ); writer.Write("TOPIC"); coloumnTop.RenderEndTag( writer );
// Render the Content of the Coloumn Panel coloumnContent = new Panel(); coloumnContent.CssClass = "ColoumnContent"; coloumnContent.RenderBeginTag( writer ); writer.Write("UUUUULA"); coloumnContent.RenderEndTag( writer );
base.Render (writer); } }
Denne klasse adder jeg til en label, like so:
coloumnPanel.Controls.Add( new RenderColoumn() );
Og dette sker så x antal gange.
Mit problem er, at de Panels der bliver renderet i RenderColoumn klassen, bliver renderet som table's i Moz Firefox - men i IE bliver de fint renderet som div (som var hvad jeg forventede).
Kan dette virkelig passe? Jeg kunne egentlig godt tænke mig at der kom div's ud til moz (og andre browsere for den sags skyld også).
Nogen der kan give en god grund til at der skulle være forskel på dette?
I følge mit hoved, så burde serverside kode slet ikke blande sig i hvilken klient der forespurgte siden.
Jeg har ikke stødt på problemet med div->table ,men har tidligere oplevet at den renderede kode var forskellig - specielt bliver alle valideringer lavet med postback i mozilla.
Hvis du åbner machine.config (findes i \WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG) kan du i sektionen "<browserCaps>" se hvordan de forskellige browsere får forskellig kode alt efter hvilken browser der åbner siden.
Problemet med div ser ud til at afhænge af hvilken tagwriter der bruges. Default bliver tagwriter sat til tagwriter=System.Web.UI.Html32TextWriter (øverst før alle filtre). For IE bliver den sat til tagwriter=System.Web.UI.HtmlTextWriter.
Jeg løste problemet (div->table) med mozilla 1.6 ved at indsætte "tagwriter=System.Web.UI.HtmlTextWriter" efter sektionen der starter med <filter> <case match="Mozilla/(?'major'\d+)"> <filter> <case match="[^0-3]" with="${major}"> tagwriter=System.Web.UI.HtmlTextWriter
Jeg ved ikke om denne ændring giver problemer andre steder (f.eks. ved generering af javascript kode til valideringen), så du må hellere tage en backup før du piller for meget ved machine.config ;)
jepsen999: Hmm okay. Det var da seriøst lidt af et .NET issue af de helt store, efter min mening. Puuuuha microsoft, puuuuha :-)
Jeg har ikke lige prøvet dit forslag endnu - og for også først tid til det iaften.
Men drop lige et svar - såfald at det virker, skal du få point :-)
Imellemtiden, hvis der er nogen der har en god forklaring på .NET's meget underlige (min mening) strategi, med at skrive forskellige client-side kode, så vil jeg meget gerne høre den.
Tjaa, en lidt underlig strategi fra MS der lugter lidt af at de gerne vil favorisere IE. Men hvis du åbner machine.config kan du se at de fleste af de browsere der er beskrevet er mobile devices, og så bliver det måske lidt smart - da jeg tvivler på at alle mobile-device producenter lever op til HTML 4.0.
Det er skidt at en standard ikke bare bliver opfyldt, men det er da et lille plus at man kan konfigurere sig ud af det - og det ikke bare er kompileret ind i IIS'en.
En af kommentarerne i ovenstående link går iøvrigt på at vedligeholde at "browsercaps" ikke foretages af MS, men af et andet firma.
>> En af kommentarerne i ovenstående link går iøvrigt på at vedligeholde at "browsercaps" ikke foretages af MS, men af et andet firma.
Ja, det bed jeg også mærke i. Men, som der også står i den kommentar, så holder ikke helt. Microsoft har klart de resourcer der skal til for at vedligeholde browsercaps.
Lige ud over denne mindre detalje, så sparker .NET jo bagdel, så jeg er stadig glad og tilfreds ;-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.