webForumDet fria alternativet

Frågor om fnuttar, variabler och assemblys

.NET

8 svar · 350 visningar · startad av Pace

Medlem sedan juni 20019 024 inlägg
Frågan#1

God dagens!

Här kommer lite småfrågor jag undrar över:

  1. Hur anger man HTML med fnuttar (") i Text-egenskapen för ett objekt, som exempelvis <a href="link.aspx">länk</a>. Att escapa dem med dubbelfnuttar fungerar inte.

    <asp:Label id="lblTest" Text="html här!">
    
  2. Om man ska skriva ut en dynamisk variabel, exempelvis Now(), som ett värde i en länk, exempelvis <a href="<% Now() %>">länk</a> ska man använda kodrenderingsblock som jag gjort, eller på något annat sätt (det gäller inte bara länkar)?

  3. Hur ska man validera en CheckBox? Varför kan man inte använda RequiredFieldValidator?

  4. Vad kan vara fel i följande kompilerade VB.NET fil:
    (The located assembly's manifest definition with name '../asp.net/test' does not match the assembly reference.)

    [b]test.vb / kompilerad till test.dll[/b]
    Imports System
    Imports System.Web
    Imports System.Web.UI
    
    Namespace UserformNamespace
    	Public Class UserformControls : Inherits Control
    		Protected Overrides Sub Render(Output As HtmlTextWriter)
    			Output.Write("test")
    		End Sub
    	End Class
    
        Public Class
    End Namespace
    
    [b]test.aspx (felraden)[/b]
    <%@ Register TagPrefix="TEST" Namespace="UserformNamespace" Assembly="../asp.net/test" %>
    
Medlem sedan juni 20011 732 inlägg
#2
  1. Använd enkel-fnuttar; <a href='link.aspx'>länk</a>.

  2. Ja, du kan använda kodrenderingsblock så som du visar a la gamla ASP. Personligen föredrar jag dock att ALLTID använda asp.net-kontroller för dynamiska data, jag tycker att man får en mer sturkturerad kod på det sättet. Alltså, i ditt exempel skulle jag göra en <asp:hyperlink> istället och sätta datumet i koden.

  3. Hm, en checkbox kan ju bara vara antingen true eller false... varför ska du validera den? Om bara det ena alternativet får väljas så förstår jag inte varför du överhuvudtaget behöver en sån. :)

  4. Prova att skriva assembly="test"

Medlem sedan juni 20001 257 inlägg
#3

Angående fråga nr 2: http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=168

Inte riktigt vad du frågar efter, men det kan kanske vara intressant ändå.

Medlem sedan juni 20019 024 inlägg
#4

Jag tackar för svaren! :)

  1. Använd enkel-fnuttar; <a href='link.aspx'>länk</a>.

Jag upptäckte att enkel-fnuttar runt Text-egenskapen rättade till problemet: <asp:kontroll Text='<a href=""></a>' runat="server"/>.

  1. Ja, du kan använda kodrenderingsblock så som du visar a la gamla ASP. Personligen föredrar jag dock att ALLTID använda asp.net-kontroller för dynamiska data, jag tycker att man får en mer sturkturerad kod på det sättet. Alltså, i ditt exempel skulle jag göra en <asp:hyperlink> istället och sätta datumet i koden.

Det är lite det jag undrar över också, jag vill inte använda <% %>, utan kompilerade serverblock, och undrar vilket det bästa sättet att göra det på är. Har exempelvis en kod som ser ut så här i gamla ASP:

<TABLE BORDER=0 WIDTH=[red]<%= TableWidth %>[/red] CELLSPACING=[red]<%= TableBorder %>[/red]
CELLPADDING=4 BGCOLOR="[red]<%= BodyShineThrewLines %>[/red]">
<TR>
	<TD WIDTH=120 BGCOLOR="[red]<%= HeadCellColor %>[/red]" CLASS="tableheader" ST....

Det blir ganska mycket hoppa fram och tillbaka mellan dynamiska variabler och statisk html, så jag undrar om det finns något bra sätt. Observera att det inte bara gäller tabeller, utan html i allmänhet.

  1. Hm, en checkbox kan ju bara vara antingen true eller false... varför ska du validera den? Om bara det ena alternativet får väljas så förstår jag inte varför du överhuvudtaget behöver en sån.

Jag har en "Accepterar du reglerna?"-checkbox som måste vara ifylld för att man ska kunna registrera sig. Jag ska kolla igenom länken, kristoffer, och se ifall det kan hjälpa mig! :)

  1. Prova att skriva assembly="test"

Nej, tyvärr. Sökvägen är rätt till filen.

Medlem sedan juni 20011 732 inlägg
#5

Vad gäller renderingsblock a la gamla asp så tolkas dessa ändå inte som gammal asp. ALLA renderingsblock kompileras, och inte som tidigare interpreteras. Du kan alltså med hyfsat gott samvete använda dessa.

Sedan gillar jag dem inte iaf... det går ALLTID att ersätta dessa med riktiga asp.net-kontroller. Sätt runat=server i din tabell så kan du sätta höjd, bredd och andra egenskaper i koden. Eller ännu hellre, använd <asp:table>, ja det är ju inte ens svårt att bygga upp hela tabellen dynamiskt! Eller ännu enklare, att använda en datagrid/list/repeater (om du ska lista något).

Jag har en "Accepterar du reglerna?"-checkbox som måste vara ifylld för att man ska kunna registrera sig. Jag ska kolla igenom länken, kristoffer, och se ifall det kan hjälpa mig!

Aha. Annars är det ju inte så överdrivet jobbigt att göra en postback och en ifsats - if(checkbox.Checked). Men visst såg länken seriöst intressant ut. :)

Medlem sedan juni 20019 024 inlägg
#6

ALLA renderingsblock kompileras, och inte som tidigare interpreteras. Du kan alltså med hyfsat gott samvete använda dessa

Vad jag har läst så kompileras inte <% ... %>!

Förresten, finns det något sätt att "trigga" någon av Validator:na så att de genererar ett fel, med tanke på Checkboxen?

Medlem sedan juni 20011 732 inlägg
#7

På ms egen sida (ASP.NET QuickStart Tutorial) kan man läsa att "Unlike with ASP, the code used within the above <% %> blocks is actually compiled--not interpreted using a script engine. This results in improved runtime execution performance. " Ska vi lita på ms? ;)

Medlem sedan juni 20019 024 inlägg
#8

Hehe, det får vi väl göra! :e

I boken "Lär dig ASP.NET på 3 veckor" av Chris Payne, står det på sid 38 att kodrenderingsblock inte kompileras. Det var kanske beta2 han använde, och sedan har det uppdaterats? Nåja, jag litar på MS nu i alla fall! :birp

Medlem sedan juni 20011 732 inlägg
#9

Hm, nej jag tror det var så redan från början. Om du har en webbsida med filändelsen .aspx så är det .net som bygger (exekverar) sidan och denna kompileras alltid, annars har jag missuppfattat det hela totalt. Däremot kan du använda gammal asp parallellt men då använder du den gamla interpretatorn, du kan aldrig blanda asp och asp.net i samma fil.

271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)