Avatar billede busschou Praktikant
03. august 2005 - 19:41 Der er 29 kommentarer og
1 løsning

newbie spørgsmål

Hey

Jeg er sprit ny i .net og prøver mig nu frem som en "sølle start" på html.dk
Første ting jeg lægger mærke til er at der autogenereres en masse kode. Der kommer både en masse hidden felter og også javascript kode
Jeg gætter på at det har noget med at serveren den  vej igennem kan huske nogle ting?
Nå men mit første spørgsmål går på validering
Hvis jeg ikke kan styre hvad serveren spytter ud af kode, hvordan kan jeg så sikre mig at det kan validere i de doctyper jeg ønsker at benytte?
Hvad mere end et par hidden felter og lidt javascript kode kan jeg risikere at serveren spytter ud af sig selv?
En anden ting der undrer mig er om der ved kodning i .net er forskel fra browser til browser?
Hvis jeg i denne lektion
http://www.html.dk/tutorials/aspnet/lektion4.asp
vælger det her eksempel
http://www.html.dk/tutorials/aspnet/lektion4_eks1.aspx
Det er en knap man klikker på og så skulle den gerne skifte farve
I IE skifter den fint farve og et kig i kildekoden viser en style på baggrundsfarven
I FF skifter den ikke farve og et kig i kildekoden viser ikke nogen style
Umiddelbart ville jeg have troet at FF kiksede pga manglende doctype i eksemplet, men når kildekoden slet ikke indeholder stylen så må det jo være fordi serveren ikke sender den med
Men hvorfor skulle den ikke gøre det bare fordi det er FF ?

Det er muligt det er total newbie spørgsmål. Men de er rare at få svar på inden jeg begiver mig videre :o)
Avatar billede busschou Praktikant
03. august 2005 - 19:43 #1
hovsa, som tillæg til det første med den ekstra javascript kode
Vil det sige at man _kun_ skal kode .net med henblik på klienter som har javascript enabled?
Avatar billede softspot Forsker
03. august 2005 - 19:59 #2
Du kan konfigurere dig ud af hvilken kode der genereres til de enkelte browsere. Det er lavet så smart (uden at have dybere indsigt i hvordan det rent faktisk er implementeret), at ASP.NET kan generere kode til den platform som klienten nu engang kører på, dvs. hvis det er en IE 4+ så kan den generere kode til den og hvis det en anden browser kan den generere kode til det (som udgangspunkt tror jeg faktisk den  er konfigureret til at generere HTML 3.2 hvis klienten ikke er IE 4+, men det er jeg ikke helt sikker på om er korrekt).

På samme måde vil jeg tro at serveren genererer kode som understøtter browsere uden javascript-understøttelse hvis browseren ikke understøtter det, men igen ikke helt sikker. Har du prøvet at slå javascript fra i en browser og surfe ind på den side du benytter. Dette kommer naturligvis ikke af sig selv hvis du selv begynder at lave webcontrols osv. selv, så skal du naturligvis tage hånd om dette, men jeg mener at mange af de medfølgende webcontrols kan dette...
Avatar billede there-is-only-xul Nybegynder
03. august 2005 - 20:00 #3
.NET er optimeret til Internet Explorer, Mr. cronberg (forfatteren af din tutorial) er heller ikke så glad for valid kode/doctypes.

Hvis man nøjes med at bruge .NET til serverside udvikling, og istedet lade javascript gøre clientside ting, så er det ikke så slemt igen.

Mht. eksemplet:
Hvis man istedet lavede så .NET ændrede en HTML eller CSS værdi, for baggrundsfarven, så ville problemet være løst.
Javascript ville også kunne gøre det , kan dog ikke huske hvordan.

Håber det besvarede dit spørgsmål.
Avatar billede busschou Praktikant
03. august 2005 - 20:03 #4
1) Jeg kan se det smarte i at .net gør en masse ting for en
2) Jeg kan se det dårlige i at .net gør en masse ting for en
----
Jeg har fx ikke været glad for at bruge frontpage, fordi man ikke kan styre hvad der kommer ud af det i kildekoden
Jeg kan se det smarte i OOD - det er genialt
Men hvis man risikerer at få "slam kode", hvad er der så vundet?
Jeg prøver at opveje fordele og ulemper
Avatar billede busschou Praktikant
03. august 2005 - 20:06 #5
softspot >> hvis jeg slår javascript fra så laver den stadig en javascript postback funktion, som så ikke virker, hvorved det simple script som skulle kopiere tekst fra en boks til en anden ikke virker
Avatar billede softspot Forsker
03. august 2005 - 20:07 #6
De ting som gøres for dig er for mig at se nødvendige for at du kan få den funktionalitet med postback og herunder serverevents, så det tror jeg ikke du kan komme omkring, med mindre du vil give køb på den funktionalitet. Ydermere er der viewstate-feltet som holder på dine kontrollers tilstande så formdata overlever et postback til serveren, men dem kan du slå fra hvis du selv vil gøre det beskidte arbejde hvad angår formstate eller bare ikke har brug for det.
Avatar billede softspot Forsker
03. august 2005 - 20:08 #7
Nej, men det ville vel heller ikke fungere, hvis det ikke havde været .NET, så det ændrer vel ikke noget... eller misforstår jeg noget af det du siger?
Avatar billede busschou Praktikant
03. august 2005 - 20:13 #8
Normalt i asp ville jeg lave en form som havde samme side som action
På den side ville jeg lave et tjek på request.form og rette felterne
Piece of cake
--
som jeg ser det i .net
Så gemmer den ekstra input felter, viewstate.. til hvad? i asp behøvede jeg jo ikke nogen ekstra felter.
Den laver en javascript funktion, til hvad? i asp kunne jeg hive det ind med request.form
--
Men måske misforstår jeg ideen med .net?
Måske er ideen at man kan få et fancy program som klarer kodningen for en, ligesom dreamveawer mm.
Og hvis man så ønsker at lave noget specielt så må man håndkode det alligevel
Avatar billede there-is-only-xul Nybegynder
03. august 2005 - 20:13 #9
softspot, jeg tror der skal forsøges at sammenlignes med f.eks. PHP5, som også er fuldt OO websprog, men ikke påvirker browseren på nogen som helst måde, da det KUN laver serverside operation, og ikke ½server/½client som .NET i visse tilfælde.
Avatar billede there-is-only-xul Nybegynder
03. august 2005 - 20:16 #10
"Måske er ideen at man kan få et fancy program som klarer kodningen for en, ligesom dreamveawer mm.
Og hvis man så ønsker at lave noget specielt så må man håndkode det alligevel"

Visual Studio .NET, dog producere det KUN ikke-valid kode, som tit vil retunere i fejl i Firefox og lign.

Men du kan da gøre det nøjagtige sammen i ASP.NET som alm. ASP, ihvertfald på de punker hvor jeg har prøvet at kode det. Jeg ved at det er muligt at lave .NET kode som virker i Firefox, da jeg ikke rigtig bryder mig om at kode andet.
Avatar billede busschou Praktikant
03. august 2005 - 20:17 #11
eksemplet jeg ser på er det her
---
<%@ Page Language="C#" %>
<script runat="server">
  void LinkButton1_Click(Object sender, EventArgs e){
    TextBox2.Text = TextBox1.Text.ToUpper();
  }
</script>
<html><body>
  <form runat="server">
    <asp:TextBox id="TextBox1" runat="server" /><br/>
    <asp:TextBox ReadOnly="True" id="TextBox2" runat="server"/><br/>
    <asp:LinkButton id="LinkButton1" onclick="LinkButton1_Click"
    text="Klik her" runat="server"/>
  </form>
</body></html>
------
som i kildekoden bliver til
------
<html><body>
  <form name="_ctl0" method="post" action="lektion5_eks1.aspx" id="_ctl0">
    <input type="hidden" name="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" value="" />
    <input type="hidden" name="__VIEWSTATE" value="dDw5MTcyNDQ0NjY7Oz4TzW1ANsZ4U/gbNEr4j0yY1OjAPA==" />
    <script language="javascript" type="text/javascript">
    <!--
      function __doPostBack(eventTarget, eventArgument) {
        var theform;
        if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
      theform = document._ctl0;
    }else {
        theform = document.forms["_ctl0"];
        }
        theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
        theform.__EVENTARGUMENT.value = eventArgument;
        theform.submit();
      }
    // -->
    </script>
  <input name="TextBox1" type="text" id="TextBox1" /><br/>
  <input name="TextBox2" type="text" readonly="readonly" id="TextBox2" /><br/>
  <a id="LinkButton1" href="java script:__doPostBack('LinkButton1','')">Klik her</a>
</form>
</body></html>
----
hvor jeg egentlig i øvrigt er i tvivl om man må have <script> inden i en <form>....
Avatar billede there-is-only-xul Nybegynder
03. august 2005 - 20:20 #12
"window.navigator.appName.toLowerCase().indexOf("microsoft")" << hehe, ingen firefox tilladt :)

Men underligt, jeg plejer ikke at få output som javascript når jeg koder .NET o.O
Avatar billede busschou Praktikant
03. august 2005 - 20:23 #13
det er jo bare et tjek, så gør den et hvis det er det ene og noget andet hvis det er noget andet
Det er for så vidt fint nok
---
Måske er det bare mig som er vant til at jeg gerne vil have helt tjek på html delen og gøre den pæn og valid.
---
PHP5 hvad kan det så i forhold til .net?
Jeg synes bare alle snakker om man skal gå fra php og asp over til .net
Måske fordi man kan genbruge sin kode i andre applikationer
Kan man så også det med PHP5 ? eller hvad går den ud på?
Avatar billede there-is-only-xul Nybegynder
03. august 2005 - 20:28 #14
PHP5 indeholder et mere OO miljø, f.eks. har vi fået PPP(public/private/protected) , exceptions og meget andet sjov, ink. DB2 support (Tak IBM). Hvilket gør det meget bedre at lave store OOP projekter i, og mere stilrent end før, da det også er mere striks mht. kode. Og så er der jo også XSL support, men her bliver min pep-talk vist lidt for lang.

Jeg vil dog sige:

ASP -> ASP.NET
ASP -> PHP4 -> PHP5
PHP -> PHP5

^^ -> JSP (ownage sprog, men utrolig svært)

.NET er fint nok, specielt fordi det er bygget til at håntere mange ting så smart, og C# f.eks. kan bruges til applications, men til websider er sprogene ens, og der er ikke meget andet en features/syntaks grund til at skifte (personligt kan jeg ikke udstå VB-syntaks)

Men hvis du er tidligere ASP programmør, vil jeg da kraftigt anbefale .NET, hvis du samtidlig gider overhovede diverse w3c-anbefalinger omkring HTML og CSS.

Men nu er jeg vist kommet ud på et sidespor, og er ikke teknisk kyndig til at fortsætte med problemet (asp.net som giver javascript, er det vel lige nu) , så jeg smutter tilbage til arbejde/cola.
Avatar billede softspot Forsker
03. august 2005 - 20:32 #15
Jeg tror ikke der er noget problem i at have script-blokke i body-sektionen (og dermed heller ikke i en form-sektion).

Ja, man kan da godt trække værdier ud af felter via Request.Form, men det behøver du jo ikke med .NET for det gør den for dig. Du skal bare koncentrere dig om at lave den kode der er behov for når brugeren trykker på den der knap - ikke ret meget andet.
Det være sagt, så kan det også have nogle alvorlige konsekvenser for belastningen af din server hvis du ikke forstår at bruge postback rigtigt, men det er igen en balance mellem god kodeskik og en forståelse af det værktøj man mellem fingrene.

Jeg er enig i at man naturligvis kan det samme i ASP.NET som man kan med ASP. Ud over det kan man også lave bedre kode, dels hvad angår vedligeholdelsesvenlighed, overskuelighed, kompleksitet, performance, osv. (det kræver dog stadig disciplin at lave god kode - det gør .NET ikke for en), dels den objektorienterede mulighed - men det er som there-is-only-xul påpeger, så kan man jo også dette i PHP.
Avatar billede busschou Praktikant
03. august 2005 - 20:33 #16
ok men jeg takker nu alligevel
Jeg kan mest asp, og en pæn sjat php. Jeg kan masser af programmeringssprog. Så om syntaksen er den ene eller anden, ja, det generer mig ikke rigtig andet end man engang imellem skriver forkert ;o)
Så derfor kan jeg da godt komme i tvivl om jeg skulle benytte PHP5 eller .net da jeg ikke rigtig kender noget til hverken det ene eller andet endnu

Men ja lige nu der undrer det mig at den spytter "tilfældig" kode ud. Men måske jeg skulle låne en bog istedet for at se på net guider
Avatar billede busschou Praktikant
03. august 2005 - 20:36 #17
softspot >> jo men så kommer det jo an på ens definition af god kode, koden fejler intet, men jeg synes så det er "grimt" at den placerer javascriptet hvor den gør. Men sådan er det vel.
Jeg prøver liget at lege lidt mere med det og ser hvad der sker
Avatar billede softspot Forsker
03. august 2005 - 20:43 #18
Ja, klart nok. Jeg ville da også fortrække at scriptkoden lå i toppen af det resulterende HTML, men når alt kommer til alt, så er det ikke det kode .NET spytter ud jeg skal vedligeholde, det er den der ligger i mine sourcefiler - og dem har du rimelig god mulighed for at styre udseendet af :)
Avatar billede busschou Praktikant
03. august 2005 - 20:48 #19
Det er rigtig, jeg blev bare nervøs for om jeg så kan stole på at .net spytter valid kode ud. Jeg har en følelse af at alt der har med M$ at gøre ikke altid er lige heldigt i de henseender :o/ ... men måske jeg bare skal vænne mig til at det er sådan det foregår og så lave nogle større forsøg og se om det går godt

Har du nogen erfaring med validering af dine sider?
Avatar billede softspot Forsker
03. august 2005 - 21:01 #20
Nej, det bruger jeg ikke :D

Det er der for meget arbejde ved :)

Jeg plejer at lave en side og teste den i de nyeste browserversioner IE, NS, Mozilla, FireFox og Opera - og hvis de fungerer der er jeg faktisk lidt ligeglad med at de ikke validerer. Det der er vigtigst for mig er at de fleste kan se det jeg laver ikke om det overholder en bunke standarder. Det er sikkert mig der er galt afmarcheret, men når kunden skal betale, vil de typisk gerne have et funktionelt produkt, frem for et produkt der overholder standarder - min opfattelse (naturligvis).
Avatar billede busschou Praktikant
04. august 2005 - 17:05 #21
nå jeg lader det være ved det tror jeg
Det eneste er det link jeg gav oprindeligt, hvor en knap enten bliver hvid eller rød afhængig af om tidens sekund er lige eller ulige
Dette sættes med
Button1.BackColor = System.Drawing.Color.Red;
I IE kommer der en style på knappen når man ser kildekoden
Denne style kommer ikke i FF
Så mit endelige slut spørgsmål må vel så være
Hvorfor kommer denne style ikke i FF
Jeg er med på som tidligere kommenteret at jeg kan kode mig ud af det på normal vis i javascript
Men lige netop der ser jeg jo fidusen i at asp.net åbner op for at man ikke skal tænke over tingene. Man skal blot sætte "BackColor" så klarer serveren resten
Men BackColor kan jo sættes på mange ting
---
Hvad er erfaringen så?
Hvis jeg ikke kan stole på BackColor, kan jeg så heller ikke stole på Height og Width osv osv ?
Avatar billede softspot Forsker
04. august 2005 - 17:32 #22
Det er fordi ASP.NET betragter alt andet en IE for downlevelbrowsere pr. default og det betyder bla. at CSS ikke understøttes, derfor får du ikke background-color på din knap (hvorfor den så ikke genererer en bgcolor-attribut er jo så et godt spørgsmål).

Du kan læse mere om emnet på dette link:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconWebFormsControlsBrowserCapabilities.asp

og om hvordan man ændrer det på dette link:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfClientTargetElement.asp
Avatar billede busschou Praktikant
04. august 2005 - 21:25 #23
i første link står der
---
By default, the ASP.NET page framework determines browser capabilities by reading the user-agent information passed from the browser to the server during a request.
---
Jvnf et spørgsmål jeg oprettede herinde for nyligt så kan man selv definere sin user-agent, der er ingen regler for hvordan user-agents ser ud, ergo kan man ikke entydigt bestemme hvad for en user-agent der benyttes, med andre ord kan man så ikke stole på at asp.net giver en brugbar kode
---
nå jeg vil læse lidt om hvordan man kan omgå det og tror i øvrigt hellere jeg må læse lidt mere om .net

aller sidste ting
Har du erfaring med hvad der sker hvis man ændrer doctypen ? eller bør man slet ikke indtaste en doctype?

Og så bare smid et svar ...takker for tålmodigheden :o)
Avatar billede softspot Forsker
04. august 2005 - 21:41 #24
Det er min opfattelse at doctypen har ligeså stor indflydelse på renderingen af HTML, CSS osv. som den altid har haft (det er vel noget som browseren forholder sig til og ikke .NET, der jo kører på serveren).

Jeg tror det er svært at lave en direkte sammenligning mellem ASP og ASP.NET fordi man gør tingene på en helt anderledes måde (hvis man vil udnytte de faciliteter som .NET stiller til rådighed). Jeg føler ikke selv jeg er nået længere med .NET end at jeg har kradset i overfladen (jeg har da været igang i næsten 2 år nu), så derfor kan jeg da kun anbefale at du læser og læser og læser - for jeg synes der er så meget man skal og kan lære inden .NET rykker for alvor. Jeg kan blot ønske god fornøjelse, for jeg er sikker på at når du får hægtet dig fast i den grundlæggende idé med .NET, så er der mange ting som er væsentlig bedre ved .NET end ASP.

Behold bare points - jeg synes ikke jeg formåede at give dig tilfredsstillende svar på nogle af dine spørgsmål - og så vil jeg ikke tage point for det. Ellers tak for budet :)
Avatar billede busschou Praktikant
04. august 2005 - 21:47 #25
jeg tænker bare at hvis man laver en strict doctype, ja fx i xhtml hvis det var det man ville, så vidt jeg ser det så spytter asp.net html4 ud, og ja så konflikter det jo
Men jeg må prøve mig frem med lidt større eksempler tror jeg

Bortset fra det så har jeg allerede set store fordele i hvordan man kan dels lave klasser men seperate filer, og nemt lave dem til dll´s osv.
Det er smart og det er umiddelbart tusse nemt :o)

Jeg beholder points, så kommer jeg på banen når jeg har prøvet lidt mere igen
Tak for hjælpen so far
Avatar billede softspot Forsker
04. august 2005 - 21:53 #26
Jeg takker - det er altid rart at sparre med kvalificeret mod-/medspil :)
Avatar billede softspot Forsker
04. august 2005 - 23:12 #27
HEP! Jeg har fundet en metode til at tvinge .NET til at sende uplevel-kode til klienten (herunder CSS- og javascript-kode). Foreløbig er der tale om en lokal parameter som sættes på den enkelte side, men det er da en start :)

Man skal i @Page-direktivet angive en attribut som hedder ClientTarget="ie5", så vil Netscape 7.2 (som jeg har testet med i dette tilfælde) også benytte CSS til at sætte baggrundsfarven med. Ulempen ved dette er naturligvis at selvom browseren ikke understøtter CSS, så kommer det altså med (på den anden side, så er det vel ikke nogen skal til).
Avatar billede busschou Praktikant
05. august 2005 - 07:45 #28
Yes den så jeg på de links du gav :o)
Jeg undrede mig over man ikke kan sætte fx ie6, for ie5 er da "gammel"
Men ja det virker
De sider jeg laver regner jeg ikke med at nogen uden css skal se
Jeg tror i øvrigt at det er et fåtal som ikke benytter css eller javascript
Måske diverse søgemaskiners webcrawlere har det slået fra, men det gør mig intet
Avatar billede softspot Forsker
05. august 2005 - 10:20 #29
Har du så også set at man kan sætte browserCaps (browser capabilities) i web.config (og andre configurationsfiler på et mere glabalt plan), så du kan angive mere præcist hvad den enkelte browser eller gruppe af browsere understøtter.
Avatar billede busschou Praktikant
05. august 2005 - 10:25 #30
ja jeg har lige "skippet det" ;o) Det virker som om der er meget at læse og lære, så  tager det et skridt ad gangen :o)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester