webForumDet fria alternativet

Formulär fel!!!

.NET

16 svar · 672 visningar · startad av Jennie_Pennie

Medlem sedan apr. 200235 inlägg
Frågan#1

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*

Medlem sedan mars 20002 836 inlägg
#2

Ändra denna rad:

<form action="holidayresponse.aspx" method="post">

till:

<form action="holidayresponse.aspx" method="post" runat="server">

cya,
PatrikB

Medlem sedan apr. 200235 inlägg
#3

mmm, men då funkar det inte att gå vidare till holidayresponse.aspx.... jag blir inte klok på det här...

Medlem sedan mars 20002 836 inlägg
#4

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
Medlem sedan apr. 200235 inlägg
#5

Page.IsPostedBack? vad är det för någe?

Medlem sedan apr. 200235 inlägg
#6

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?

Medlem sedan juni 20011 732 inlägg
#7

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.

Medlem sedan mars 20002 836 inlägg
#8

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

Medlem sedan apr. 200235 inlägg
#9

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... : )

Medlem sedan mars 20002 836 inlägg
#10

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

Medlem sedan apr. 200235 inlägg
#11

Jepps, det är den. Beginning ASP.NET using VB.NET. Exemplet är hämtat från sidan 126...
så jag har alltså lagt ut över 600 spänn på exempel som inte funkar... *suck* det här bådar inte gått för mitt enorma examensarbete... : (

Medlem sedan apr. 200235 inlägg
#12

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>...?

Medlem sedan dec. 19991 072 inlägg
#13

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.

Medlem sedan mars 20002 836 inlägg
#14

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

Medlem sedan juni 20011 732 inlägg
#15

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. :)

Medlem sedan mars 20002 836 inlägg
#16

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

Medlem sedan apr. 200235 inlägg
#17

Tack! vad snälla ni är... nu känns det inte lika hopplöst (dock fortfarande lite...)
Och näe då... jag baserar inte hela mitt ex-jobb på en bok... det är bara det att jag vill få grepp om det här med ASP.NET... : )

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)