Jag har nu jobbat intensivt ett tag för att lära mig asp.net. Jag har varit helt och hållet positivt överraskad - fram till ikväll. Hej, du kan inte använda uct - alltså usercontrols för att lösa detta? Jag som också knackat asp ett par år och gör det utan att fundera har också krigat rätt ordentligt med asp.net - en sak har jag kommit fram till, det är nytt tänk som gäller - helt klart. på dom knappar som du inte vill ska köra valideringen lägger du till Pelle: Jo, det låter ju vettigt. Blev bara besviken då jag tyckte asp.net var så bra i övrigt :) Att kritisera ASP.NET för att inte kunna hantera mer än ett formulär är som att kritisera elefanten för att bara ha EN snabel. :-) när vi ändå pratar om formulär i asp.net , Hej Mikael.NET, > Och elefantens snabel beror på evolutionens och naturens lagar. Dessa är ju svårare > att kritisera då upphovsmannen är mindre känd.Riktigt uselt, ASP.NET!
Jag försökte nämligen på den stora konsten att ha två formulär på en och samma sida. Detta är något som inte har varit något problem i vanlig asp då alla formulär har varit html-element. Men... använder man två <form runat=server>-element i en asp.net-sida klagar den direkt: "Endast ett <form runat=server> per sida, klåpare!"
"Jaha... det måste ju gå att lösa på något sätt", tänkte jag. Jag försökte placera de olika formulären i olika user controls som jag sedan använde på sidan, men icket. Hm... Jag läste och läste på nätet. Det visade sig att jag inte var ensam om problemet, men även om frågorna kring detta var många, var svaren klena.
Visst... jag kan ju ha ett stort <form runat=server> som täcker hela sidan och att man sedan placerar alla funktioner (såsom sökformulär, loginformulär m.m.) inom detta. Det går till viss del, men om man vill använda sig av asp.net´s valideringskontroller så skapar det problem. Dom validerar ju nämligen HELA formuläret. Ett exempel på detta problem återfinns på Microsofts egna www.asp.net:
http://www.asp.net/Forums/User/CreateUser.aspx?tabindex=1
(Testa söka med funktionen uppe till höger. Valideringskontrollerna kontrollerar då även formuläret i mitten av sidan. Pinsamt?)
Ja, jag har inte kommit på någon bra lösning för detta. Visserligen har Paul Wilson en lösning på detta för endast 50 dollar. Min lösning är billigare men knappast särskilt bra: Infoga de olika formulären i separata sidor som man sedan inkluderar med iframes.
Jaja... vad ska man säga? Riktigt uselt, ASP.NET!Sv: Riktigt uselt, ASP.NET!
Att använda sig av samma metoder som tidigare går inte hem nu utan man måste börja fundera i nya banor. Vi får hjälpas åt att skriva artiklar vartefter vi kommer på saker - speciellt nu när alla är nybörjare, då kan vi lära av varandras misstag och erfarenheter och på så sätt försöka lära varandra till nya experter.Sv: Riktigt uselt, ASP.NET!
causesvalidation="False"Sv: Riktigt uselt, ASP.NET!
Andreas: Men hur gör jag om jag vill validera båda formulären som ligger under samma form runat=server? Mitt problem ser ut som det på asp.net i exemplet ovan.Sv: Riktigt uselt, ASP.NET!
Nejmen allvarligt... Jag skulle vilja påstå att om du inte fattat varför du inte kan ha mer än ett formulär har du inte studerat ASP.NET TILLRÄCKLIGT hårt!
Tillbaka till böckerna!
//Mikael.NETSv: Riktigt uselt, ASP.NET!
jag vet att man måste ha :
enctype="multipart/form-data" i sitt formulär för att kunna använda http upload.
men , finns det någon anledning att inte ha detta på ALLA formulär , blir det långsammare eller någe?
på min sajt www.compona.com har jag bara EN aspx sida , som agerar template , alla andra sidor är sedan asCx som laddas in i min template sida...
kan jag utan att det sabbar något , pilla in enctype="multipart/form-data" i min template asPx ?? (det är den som innehåller formuläret)
//RogerSv: Riktigt uselt, ASP.NET!
Jag tycker inget - varken en plattform, programmeringsspråk eller något annat - står fritt från kritik.
Jag vet mycket väl varför det bara går med ett form-element, men det mildrar inte kritiken. Det hade inte mildrat kritiken även om jag inte studerat böckerna tillräckligt heller. Jag vet (och det gör du också) att Microsoft mycket väl hade kunnat undvika detta problem om man hade värderat det. Nu är så inte fallet vilket sedermera resulterade i kritik från mig. Allvarligare än så var det inte.
Och elefantens snabel beror på evolutionens och naturens lagar. Dessa är ju svårare att kritisera då upphovsmannen är mindre känd. Men ASP.NET tvingas inte foga sig efter dessa lagar.
Personligen tycker jag att kritik är bra. Även icke konstruktiv sådan (faktiskt). Det är nämligen det som är en av det mest bidragande faktorerna till utveckling.
I all vänlighet...
/brattenSv: Riktigt uselt, ASP.NET!
På fullaste allvar var det riktigt ordentligt roligt. :-)
Vad gäller kritik (och nu blir det väl mer filosofiskt) så är inte all kritik bra. Kritik behöver inte vara konstruktiv för att vara bra, det håller jag med om. den måste däremot vara underbyggd.
Tyvärr måste jag nog säga att utifrån ditt första inlägga så är den inte det men det inlägg jag nu svarar på ändrar lite på saken eftersom du flyttade fokus mer till någon slags systemeringsfas för utvecklarna av ASP.NET och då kan man mer än gärna hålla med om att det kanske inte alltid är bra att vara låst till ett formulär.
Jag hoppas att detta förtydligande från min sida gör att du svär mindre vid åsynen av mitt alias.
Mer riktat allmänt (och framförallt till inlägget strax innan mitt)
Det har dock en hel del fördelar i det att du t ex VET att det bara finns ett formulär. Allt som man VET är bra i programmering, det vet du lika bra som jag.
Till att börja med så är uppbyggnaden kring arkitekturen i .NET sådan att du/jag/alla måste ta ett steg tillbaka från klassisk asp innan vi söker färstå och lära oss. Börja med följande. Tänk inte på att formuläret finns där! Se bara till att dina kontroller som serven ska ha något med att göra ligger inom taggarna. Personligen namnger jag inte ens formuläret och har sällan kod i aspx-filen.
När vi släppt detta kollar vi lite på hur tanken med arkitekturen är uppbyggd och nu är jag medvetet mycket summarisk så försök inte att angripa mina kunskaper och påpeka er egen förträfflighet kära pellesoftare.
I problemet med HTTP och internet ligger t ex datakonsistens. Hur ska din server hålla ordning på alla requests? Jom detta är mycket smöget (göteborgska) löst genom ett litet fält i formuläret som heter Viewstate. Detta fält innehåller alla kontrollers värden och därför är det istället upp till klienten att hålla ordning på datakonsistens.
När sidan kommer till servern läses viewstate av och jämförs med värden i korresponderande kontroller. Genom ändringar triggas olika event på servern och där kan du med lätthet ta hand om t ex en ändring i namn-fältet.
Uppbyggnaden kring detta gör att du får ett beteende som är mer likt VB6 än just klassiska asp. Ett klickpå en knapp triggar ett btn_Click event på servern, vilket göra tt du slipper hålla ordning på olika "postar" från olika formulär, som man tidigare fick ägna timmar åt. Datakonsistensen är inte helt löst i ASP.NET men det är faen så mycket roligare att jobba med.
Genom det faktum att formuläret i sig inte längre är databärare, som förr, så skapas effekten att du heller inte behöver hålla ordning på flera olika formulär och viewstates och varför då ha flera. Inte efterfrågar du fler PageLoad i VB6. Varför? För att det är en självklar del av arkitekturen. På samma sätt är hanteringen av postbacks via ETT formulär det i ASP.NET.
*trött i fingrarna nu*
Kanske det gjorde det hela LITE klarare för Er som inte riktigt har kolla på den bakomliggande motorn i ASP.NET. Själv brukade jag bygga asp-sidor i asp.net och helt sonika ta bort viewstate i formulärets postdata och sedan läsa av alla kontroller själv.
Det var INTE smart.
//Mikael.NET