Jag använder den här koden på min sida: Vissa av ASP.Net's server kontroller kan se vad det är för typ av browser och på så sätt generera ut kod för just den typen av browser som requestar sidan. > <b>Beror det på att .net känner av vad det är för typ av läsare som besöker sidan och anpassar innehåller efter webbläsaren? Och när w3c kommer så tror .net att den inte klarar av CSS? </b> Jag anser bara att det är fördelar, för olika browser klarar av olika saker. "Resultatet kommer att bli <img ... style="border:1px sold black">" > <b>Jag anser bara att det är fördelar, för olika browser klarar av olika saker.</b> För mig går den genom valideringen utan några problem. Gäller bara att man har satt alt attributet för att w3c validering ska gå genom. > <b>En fråga bara, varför bry sig om w3c validerare visar border=0 istället för IE som visar Style="...." ?? </b> Syftade inte på ditt inlägg utan på en annan som skrev "Sedan kan jag inte hålla med om att det är bra att .net spottar ut kass kod". För mig så något som spottar ut kass kod dåligt. Så allt jag skrev var inte riktat på dina inlägg. Efter som inläggen visas alltid längst ner på sidan, så skriver jag ofta svar på flera personers inlägg i ett och samma inlägg för att inte skapa en lång lista med inlägg. Anledningen till att jag vill ha style="..." och inte border="..." är att jag har en kravspec att koda efter och där står det vilken HTML-standard jag ska följa. Och det är samma standard för ALLA webbläsare. Då vill jag inte ha en kod för Lynx och en för IE6. ;) Du kan stänga av så kontrollerna inte bryr sig om vilken browser det är genom attsätta client target i web.config: Det blir ingen skillnade.BorderWidth
<code>
<asp:image ImageUrl="bild.gif" BorderWidth="0" runat="server" />
</code>
När jag kör sidan och kollar koden så blir det:
<code>
<img src="bild.gif" style="border-width:0px;" />
</code>
Men när jag validerar sidan på w3c så blir koden:
<code>
<img src="bild.gif" border="0" />
</code>
Beror det på att .net känner av vad det är för typ av läsare som besöker sidan och anpassar innehåller efter webbläsaren? Och när w3c kommer så tror .net att den inte klarar av CSS?Sv: BorderWidth
/Fredrik NSv: BorderWidth
Antagligen, och tyvärr! Välkommen med en av de större nackdelarna med ASP.NETs inbyggda kontrollers!Sv: BorderWidth
Du behöver inte använda dig av BorderWidth propertyn för image.
Du kan lika väl använda Style propertyn, Style. Tex:
<asp:image ImageUrl="bild.gif" Style="border:1px sold black" runat="server" />
Resultatet kommer att bli <img ... style="border:1px sold black">.
Det är just kontrollernas egna property som kan omformateras efter vilken browser det är. Du behöver inte alls använda dig av dom utan du kan använda dig av tex Style eller CssClass.
/Fredrik NSv: BorderWidth
Noop. :(
Resultater blir: <img ... border="0" style="border:1px sold black">
Det går inte igenom validatorn.
Sedan kan jag inte hålla med om att det är bra att .net spottar ut kass kod. Jag vill kunna kontrolera HTML-koden till 100% inte 95%.
Jag har hört att det ska gå att ändra detta in web.config på nåt sätt. Någon som vet mer om detta?
/TorSv: BorderWidth
Hade det varit en fungerande implementation så hade det varit bra!
Vet du vilka browsers som stöds i ASP.NETs kontroller?
Vet du hur många olika browsers som används på Internet?
De frågorna tillsammans ger svaret att det inte går att jobba med browserverifiering! Jag är fullt medveten om att det finns olika åsikter inom detta ämne, men det är min ståndpunkt!Sv: BorderWidth
Sedan kan du kontrollera HTML koden till 100%, du behöver inte använda ASP.Nets server kontroller utan du kan skriva ren HTML kod.
En fråga bara, varför bry sig om w3c validerare visar border=0 istället för IE som visar Style="...." ?? Det fungerar ju precis som det ska.
ASP.Nets kontroller behöver man inte använda om man inte gillar dom. Man kan bygga egna eller skriva ren HTML kod, du kan tex skriva:
<img id="myImage" runat="server" ....>
Och den går att komma åt i code-behind, skillnanden är att vanliga HTML element som sätts till runat="server" blir HtmlControls medans <asp:....> blir WebControls.
Dessa kan självklart ha olika egenskaper.
Det är inte ASP.Net som är dåligt, det är vissa av de kontroller som är implementarde på ett sätt som just ni inte önskar. Som jag nämnde tidigare gillar man inte de kontroller som finns att använda, så bygger man sina egna.
/Fredrik NSv: BorderWidth
För att då validerar du inte den sidan som du vill validera, utan en annan kod!
> <b>Det är inte ASP.Net som är dåligt,</b>
Det har jag inte heller påstått! Bläddra upp och läs vad jag skrev, "nackdelarna med ASP.NETs inbyggda kontrollers"! Det är just kontrollerna som jag inte gillar!
Att man kan bygga webbsidor med codebehind, och att man kan bygga egna kontroller är väldigt trevliga och stora steg från ASP3.Sv: BorderWidth
I IE så blir BorderWidth="0" en style tag på img elementet men i vissa andra browsers så blir blir det inte någon style. Jag anser att det spelar ingen roll. IE och Netscape stödjer och vissa andra gör det inte. Om kontrollen då känner av att man kör IE så väljer den att generera ut styles, och för dom som den inte känner igen gör den inte det, för att de klienter som inte stödjer style kanske får ett fel när den försöker tolka style attributet. Jag tycker att de kontrollerna är implementarde på rätt sätt att de väljer en säkrare väg att gå (Alltså okända browsers använder inte style). Om det inte skulle vara så, utan tvärtom, så skulle säkert någon tycka att det är en nackdel, så vart drar man gränsen?
Nu vet alla som har läst dessa inlägg att image och det gäller även andra kontroller kan generera ut olika kod, så dom som bestämmer sig för att gå på den säkra sidan och vill ha 100% kontroll kan skriva vanlig HTML eller skapa sina egna kontroller.
OBS! Alla Microsoft server kontroller stödjer HTML 3.2 standarden och kommer att fungera fel fritt i alla browsers som stödjer HTML 3.2.
ASP.Net Web Server kontroller är designade att funger lika dant o avsett vilken browser en användare använder sig av.
Fördelarna med Web Server kontrollerna över HTML server kontroller är:
1. Web server kotroller är objekt och har bra error kontroll.
2. Den genererar automatiskt ut korrekt HTML kod för både downlevel (HTML 3.2) och uplevel (HTML 4.0) browsers.
Web server kontroller har nackdelar så som att man har mindre kontrol över hur en server kontroll är renderad på den sida som skickas till browsern.
/Fredrik NSv: BorderWidth
Åter till min fråga. Jag har hört att man kan stänga av denna "feature" i web.config. Någon som vet mer om detta?Sv: BorderWidth
<code>
<configuration>
<system.web>
<clientTarget>
<add alias="downlevel" userAgent="Unknown"/>
</clientTarget>
</system.web>
</configuration>
</code>
Du kan även sätta det på @Page nivå, genom att sätta ClientTarget="Downlevel" som innebär att du renderar enbart efter HTML 3.2 standarden.
/Fredrik NSv: BorderWidth
Det blir style i IE6 men border i NN4.
/r Det funkar när jag lägger det i @Page på sidan? Men jag vill hellst slippa att göra det - det är lite smidigare att ha det i web.config