Ändra denna rad:
<form action="holidayresponse.aspx" method="post">
till:
<form action="holidayresponse.aspx" method="post" runat="server">
cya,
PatrikB
16 svar · 672 visningar · startad av Jennie_Pennie
Får upp detta fel:
Control 'Fullname' of type 'TextBox' must be placed inside a form tag with runat=server.
När jag skrivit detta:
<html>
<head>
<title>Holiday page</title>
</head>
<body>
<form action="holidayresponse.aspx" method="post">
<h1>Feiertag Holidays</h1>
Details.
<br>
<br>
Name:<asp:textbox id="Fullname" runat="server" />
<br><br>
Address:<asp:textbox id="Address" textmode ="multiline" runat="server" />
<br><br>
Sex -
<asp:radiobuttonlist id="sex" runat="server">
<asp:listitem value="Male" />
<asp:listitem value="Female" />
</asp:radiobuttonlist>
Destination:
<asp:dropdownlist id="Destination" runat="server">
<asp:listitem value="Madrid" />
<asp:listitem value="Barcelona" />
<asp:listitem value="Lisbon" />
<asp:listitem value="Oslo" />
<asp:listitem value="Prague" />
</asp:dropdownlist>
<br><br>
<input type="Submit">
<input type="Reset">
</form>
</body>
</html>
Vad gör jag för fel?? Har gjort ett exempel ur en bok om ASP.NET med VB.NET... men vad är det för fel??
Kan även tillägga att om jag lägger inte runat="server" i form taggen så vill den inte gå vidare till nästa sida... *suck*
Ändra denna rad:
<form action="holidayresponse.aspx" method="post">
till:
<form action="holidayresponse.aspx" method="post" runat="server">
cya,
PatrikB
mmm, men då funkar det inte att gå vidare till holidayresponse.aspx.... jag blir inte klok på det här...
du får så att säga posta tillbaka till samma sida ... dvs, utelämna action i formtaggen.
Sedan i din Sub Page_Load() får du lägga till:
If Page.IsPostedBack Then
'## -- kod som ska köras när formuläret postas tillbaka --
End If
Page.IsPostedBack? vad är det för någe?
ok, IsPostBack skulle det vara... då funkade det... men inte när jag hade det i Sub Page_Load... då flög den ju vidare till nästa sida på en gång... finns det nåt annat sätt?
Du behöver tänka om en del om du är van vid gamla asp. Till skillnad mot tidigare där du ofta skickade data mellan olika sidor kan lägger du ofta all funktionalitet i funktioner på samma sida som du anropar i olika ordning för varje gång du postar tillbaka till servern.
För det första: ta bort action i formtaggen helt och hållet. Det enda du behöver använda i normalfallet är runat=server, alltså <form runat="server">. När besökaren sedan skickar information till servern så ser du till att starta funktioner som ligger på samma sida som han befinner sig på.
Det är här IsPostedBack (eller IsPostBack i c#) kommer in i bilden:
Villkoret IsPostBack är sant endast när du gör en roundtrip tillbaka till sidan, dvs INTE första gången sidan hämtas/exekveras men alla andra gånger sidan exekveras och skickas tillbaka till användaren. Motsatsen - IsNotPostedBack (heter det så i VB?) eller !(IsPostBack) - är sant endast första gången sidan exekveras av en besökare men aldrig vid en roundtrip.
sorry för IsPostedBack .... använder en egen funktion i vanliga asp som heter så ... men IsPostBack ska det va :e
testa denna kod ... kika på den så ser du hur det funkar.
<% @ Page language="VB" %>
<SCRIPT language="VB" runat="server">
Sub Page_Load()
If Page.IsPostBack Then
'## -- kod som ska köras när formuläret postas --
myLabel.text = myField.text
myField.text = ""
End If
End Sub
</SCRIPT>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post"" runat="server">
<asp:textbox id="myField" runat="server" />
<br />
<asp:button type="submit" id="myButton" text="Click" runat="server"/>
</form>
<asp:label id="myLabel" runat="server" />
</body>
</html>
e ju lite nybörjare på detta jag med .... så det kanske går att göra bättre ... men dett har jag använt utan problem :)
cya,
PatrikB
ok... tack, men helt seriöst... borde det inte funka som jag skrev först, det är ju trots allt det som står i boken jag köpte för flera hundra kronor... man tycker ju att exemplen ska funka så man kan gå vidare utan att slippa tänka för mycket på funktioner och procedurer som man kanske kommer lära sig längre fram i boken... hmmm... vi får se vad det blir av med det här... tack iaf... : )
Att det inte funkar kanske beror på att boken är "gammal" tryckt/skriven innan skarpa versionen av NET Frameworket kom ut, dvs, det är Beta 2 kod som boken bygger på.
Vet inte själv eftersom jag gillar konceptet att skicka tillbaka till samma sida, gör så även i vanliga asp ...... men man kan tycka att det ska funka.
Vilken bok använder du?
Själv började/läser/labbar med Beginning ASP.NET using VB.NET från Wrox. Just wrox böckerna gillar jag personligen. Tycker att de är de klart bästa böckerna .... kan vara lite tunga vid en första överblick :e
cya,
PatrikB
Förresten, måste man använda sig av asp.nets egna formulär? funkar det med vanliga formulär? alltså om jag bara skriver <input type=text> istf. <asp:textbox>...?
Om du skriver "<input type="text">" istället för "<asp:textbox>" så kommer koden att fungera när du sätter en "action" på formuläret.
Men om du vill använda asp-kontroller (<asp:textbox>) så måste formuläret göra en postBack eftersom kontrollen då kommer tas upp som ett objekt i vb-koden.
ok,
du kan hitta alla "rättningar" till felen i boken här: Beginning ASP.NET using VB.NET Errata
de tar upp just ditt exempel, det som finns på sid. 126
Hittar du andra fel i boken som ej finns med i denna lista kan du själv rapportera det till Wrox
cya,
PatrikB
Försök att reklamera boken, även om det inte är helt enkelt att göra det med böcker av förklarliga skäl så tycker jag nog att det är ganska lurigt att sälja böcker som bygger på en beta som inte längre existerar. Fick du ingen upplysning av detta i bokhandeln/på internet/var du nu köpte boken så är det något för reklammationsnämnden att bita i.
För övrigt finns det många bra (och naturligtvis up-to-date) guider på nätet... och om det är ett examensarbete så kanske du inte bör lägga ALL vikt på en enda bok. :)
vilket inte behövs då alla rättningar från beta 2 till skarp finns upplagda på https://www.wrox.com
Det är väl så med de flesta programmeringsböcker att de lixom blir out-of-date rätt snabbt och att Wrox har denna tjänst är ju helt kanon.
Man kan visa alla felen på en gång och sedan skriva ut sidan så har man "alla" rättningar vid sidan av och man kan kika in dem när de behövs, allt sorterat efter sida.
cya,
PatrikB