webForumDet fria alternativet

Varför blir det fel?!

.NET

13 svar · 387 visningar · startad av Mika3l

Medlem sedan nov. 20018 492 inlägg
Frågan#1

Hej!

Jag sitter och testar ett exempel på användarkontroller men det vill inte fungera. :(

Koden har jag skrivit direkt ur boken(jag hittar iallafall inga fel :l ) men jag får felmeddelandet:
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30203: Identifier expected.

Source Error:

Line 3: <script runat="server">
Line 4: Sub Page_Load(obj as object, e as eventargs)
Line 5: lblMessage.Text = "Egenskaper för användarkontrollen:<br> " &_ 'PROBLEMRAD
Line 6: "ID: " & LoginForm1.id & "<br>" &_
Line 7: "Bakgrundsfärg: " & LoginForm.BackColor & "<br>" &_

Source File: c:\inetpub\wwwroot\aspnet3veckor\dag6\kodlista0604.aspx Line: 5

Kodlista0604.aspx

<% @ Page Language="VB" %>
<% @ Register TagPrefix="TYASPNET" TagName="LoginForm" src="LoginForm.ascx" %>
<script runat="server">
Sub Page_Load(obj as object, e as eventargs)
lblMessage.Text = "Egenskaper för användarkontrollen:<br> " &_
"ID: " & LoginForm1.id & "<br>" &_
"Bakgrundsfärg: " & LoginForm.BackColor & "<br>" &_
"Användarnamn: " & LoginForm.Username & "<br>" &_
"Lösenord: " & LoginForm.Password
End Sub
</script>
<html>
<head>
<title>Användarkontroller i ASP.NET</title>
</head>
<body>

<form runat="server">
<TYASPNET:LoginForm id="LoginForm1" runat="server"
Password = "test"
Username = "Mikael"
BackColor="#FF0000" />
</form>
<br>
<asp:label id="lblMessage" runat="server"/>

</body>
</html>

LoginForm.ascx

<script language="VB" runat="server">
public BackColor As String = "#FFFFFF"
public UserName As String
public Password As String
public Sub Submit_Click(obj as object, e as eventargs)
lblMessage.Text = "Användarnamn: <strong>" & User.Text & "</strong><br>Lösenord: <strong>" & Pass.Text & "</strong>"
End Sub
</script>

<table cellspacing="15" style="background: <%=BackColor%>; font-family: Verdana; font-size: 12px; border: 1px solid #000000;">
 <tr>
  <td>
<strong>Användarnamn:</strong>
  </td>
  <td>
<asp:textbox id="User" runat="server"/>
  </td>
 </tr>
 <tr>
  <td>
Lösenord:
  </td>
  <td>
<asp:textbox id="Pass" TextMode="password" runat="server"/>
  </td>
 </tr>
 <tr>
  <td colspan="2">
<asp:button text="Logga in" onClick="Submit_Click" runat="server"/>
  </td>
 </tr>
</table>
<br>
<asp:label id="lblMessage" runat="server"/>

Tacksam för svar!

/Mika3l

Medlem sedan juni 20011 732 inlägg
Medlem sedan nov. 20018 492 inlägg
#3

Ok, tack, kan mitt kodexempel inte fungera p.g.a att det är skrivet för Beta 2 och jag använder den skarpa versionen av .NET?

Medlem sedan juni 20011 732 inlägg
#4

Jo, visst finns det skillnader, men jag vet inte om det beror på detta i det här fallet. Ska det inte vara:

lblMessage.Text = "Egenskaper för användarkontrollen:<br> " &_
"ID: " & LoginForm1.id & "<br>" &_
"Bakgrundsfärg: " & LoginForm1.BackColor & "<br>" &_
"Användarnamn: " & LoginForm1.Username & "<br>" &_
"Lösenord: " & LoginForm1.Password

???

Medlem sedan nov. 20018 492 inlägg
#5

Vad är skillnaden(ser ingen :p )?

Medlem sedan juni 20011 732 inlägg
#6

id på kontrollen är LoginForm1 med en etta (1:a) efter... du har skrivit LoginForm1 första gången men sen refererar du till LoginForm utan en etta som ju är ditt tagname... loginform1 och loginform är inte samma sak du...

Medlem sedan nov. 20018 492 inlägg
#7

Oh, nu såg jag.
Jag får prova att ändra!
*Bläddar upp filerna*
Hmmm...
Nu blir det ett annat konstigt fel innan jag ens har hunnit ändra. :(

Compiler Error Message: BC30203: Identifier expected.

Source Error:

Line 3: <script runat="server">
Line 4: Sub Page_Load(obj as object, e as eventargs)
Line 5: lblMessage.Text = "Egenskaper för användarkontrollen:<br> " &_
Line 6: "ID: " & LoginForm1.id & "<br>" &_
Line 7: "Bakgrundsfärg: " & LoginForm.BackColor & "<br>" &_

Source File: c:\inetpub\wwwroot\aspnet3veckor\dag6\kodlista0604.aspx Line: 5

kodlista0604.aspx

<% @ Page Language="VB" %>
<% @ Register TagPrefix="TYASPNET" TagName="LoginForm" src="LoginForm.ascx" %>
<script runat="server">
Sub Page_Load(obj as object, e as eventargs)
lblMessage.Text = "Egenskaper för användarkontrollen:<br> " &_
"ID: " & LoginForm1.id & "<br>" &_
"Bakgrundsfärg: " & LoginForm.BackColor & "<br>" &_
"Användarnamn: " & LoginForm.Username & "<br>" &_
"Lösenord: " & LoginForm.Password
End Sub
</script>
<html>
<head>
<title>Användarkontroller i ASP.NET</title>
</head>
<body>

<form runat="server">
<TYASPNET:LoginForm id="LoginForm1" runat="server"
Password = "test"
Username = "Mikael"
BackColor="#FF0000" />
</form>
<br>
<asp:label id="lblMessage" runat="server"/>

</body>
</html>

Det kvittar om jag lägger labeln i form, det fungerar inte heller. :l

Medlem sedan apr. 20003 971 inlägg
#8

Ändra alla LoginForm till LoginForm1.

Medlem sedan nov. 20018 492 inlägg
#9

Så här menar du?

<% @ Page Language="VB" %>
<% @ Register TagPrefix="TYASPNET" TagName="LoginForm1" src="LoginForm.ascx" %>
<script runat="server">
Sub Page_Load(obj as object, e as eventargs)
lblMessage.Text = "Egenskaper för användarkontrollen:<br> " &_
"ID: " & LoginForm1.id & "<br>" &_
"Bakgrundsfärg: " & LoginForm1.BackColor & "<br>" &_
"Användarnamn: " & LoginForm1.Username & "<br>" &_
"Lösenord: " & LoginForm1.Password
End Sub
</script>
<html>
<head>
<title>Användarkontroller i ASP.NET</title>
</head>
<body>

<form runat="server">
<TYASPNET:LoginForm1 id="LoginForm1" runat="server"
Password = "test"
Username = "Mikael"
BackColor="#FF0000" />
</form>
<br>
<asp:label id="lblMessage" runat="server"/>

</body>
</html>

Jag får fortfarande samma felmedelande... :(

Medlem sedan juni 20011 732 inlägg
#10

Nope, inte så. Först och främst har du ett tagprefix (TYASPNET), det är ett slags namespace. Sen har du ett tagname (LoginForm) som är ett unikt namn för hela kontrollen. Men eftersom du kan återanvända en sån här kontroll om och om igen så kan du också sätta ett id på den enskilda kontrollen, i ditt exempel LoginForm1. Om du ska hämta något i den enskilda kontrollen så måste du referera till dess unika id, inte till kontrollen tagname.

Här har du ett enkelt exempel:
http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/pagelets/Pagelet2.src&file=VB\Pagelet2.aspx&font=3

...och:
http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/pagelets/Pagelet2.src&file=VB\Pagelet2.ascx&font=3

När du felsöker så underlättar det om du skalar ned koden så mycket du kan (markera bort kod) så är det lättare att se vad som händer. Sen skriver du ut dina variabler först innan du försöker använda dem i koden om du är osäker på vad de innehåller. Gör detta antingen i en response.write eller med debug="true" som du fick beskrivet under ett annat inlägg!

Medlem sedan nov. 20018 492 inlägg
#11

Det är knepigt för felmeddelandet menar att det inte finns någonstans att "skriva ut" lblMessage men det finns det, egentligen borde jag inte få ett sådant felmeddelande. :l

Jag tror jag fattade lite mer nu iallfall när jag såg sidorna som du skickade. :) :stud

Medlem sedan juni 20011 732 inlägg
#12

Lägg din label innanför form-taggen så går det nog bättre...

Medlem sedan juni 2000504 inlägg
#13

liten detalj kanske.. men prova även

& _ istället för &_

(alltså mellanslag mellan & och _ ) kanske..? :)

Medlem sedan nov. 20018 492 inlägg
#14

Det har löst sig ändå. :)
Jag la allt på samma rad och då fungerade det. :)
Får prova med mellanslag någon annan gång. ;)

Tack ändå!

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