Avatar billede fun22 Nybegynder
04. november 2007 - 19:57 Der er 9 kommentarer og
1 løsning

Bruge funktion i app_code mappen

Hej

Jeg har lavet en fil der hedder AgeScript.vb som ligger i min app_code mappe..

I den fil har jeg følgende:

Imports Microsoft.VisualBasic

Public Class AgeScript
   
    Public Sub GetAge(ByVal BirthDate As DateTime)
        ' get the difference in years
        Dim GetAge As Integer = DateTime.Now.Year - BirthDate.Year
        ' subtract another year if we're before the
        ' birth day in the current year
        If DateTime.Now.Month < BirthDate.Month Or (DateTime.Now.Month = BirthDate.Month And DateTime.Now.Day < BirthDate.Day) Then
            GetAge = GetAge - 1
        End If
    End Sub
End Class

Så vil jeg så bruge funktionen på en af mine side på følgende måde:

GetAge("19-08-1987 00:00:00")

Men den skriver at "Name 'GetAge' is not defined"

Hvad skal man gøre for at den kan se de funktioner der ligger i app_code mappen??
Avatar billede erikjacobsen Ekspert
04. november 2007 - 20:03 #1
Du har lavet en klase med funktionen, så du skal instantiere et objekt

  Dim a as new AgeScript()
  a.GetAge(...)

Eller ... i dette tilfælde lave funktionen shared (static) da den ikke behøver at være i et objekt:

  Public Shared Sub GetAge(ByVal BirthDate As DateTime)

og så

  AgeScript.GetAge(...)

Men, men, men. Når parameteren er erklæret som en DateTime, så kan du ikke sende en streng med.
Avatar billede nielle Nybegynder
04. november 2007 - 20:03 #2
Funktionen ligger inde i AgeScript klassen og derfor skal du have fat på sådan en først.
Avatar billede erikjacobsen Ekspert
04. november 2007 - 20:03 #3
Og glemte lige, at du ikke får noget tilbage fra din Sub - måske mener du at det skal være en Function?
Avatar billede erikjacobsen Ekspert
04. november 2007 - 20:11 #4
Og endnu en ting. Altid i VB.NET sæt den til

  option explicit on
  option strict on

som de første to linier. Det får VB.NET til at opføre sig som et rigtigt programmeringssprog, der vil give dig rigtige informationer om fejl. Uden de to linier kan man få rodet sig ud i noget værre kode, uden at vide af det. De betyder at der kommer stærkt typetjek på, og at variabler skal erklæres.
Avatar billede fun22 Nybegynder
05. november 2007 - 17:40 #5
Okay, nu er jeg så kommet videre med Public Shared Sub og AgeScript.GetAge...

Men som du siger så retunere den ingenting..

Det den skal at den får en en datatime fra databasen, og så skal retunere et enkelt tal fek. 21..
Avatar billede torotune Nybegynder
05. november 2007 - 20:15 #6
Så kan det se sådan her ud:

i din klasse AgeScript.vb:

Public Class AgeScript

    Public Function GetAge(ByVal BirthDate As DateTime) As Integer   
        Dim Age As Integer = DateTime.Now.Year - BirthDate.Year   
        If DateTime.Now.Month < BirthDate.Month Or (DateTime.Now.Month = BirthDate.Month And DateTime.Now.Day < BirthDate.Day) Then
            GetAge = Age - 1
        End If
        Return Age
    End Function
End Class

På en af dine sider smider du en label ud på din form for at få vist outputtet. I koden her kalder du din Function sådan her, f.eks. i dit Page_Load-event:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim a As New AgeScript
        Dim result As Integer = a.GetAge("19-08-1987 00:00:00")
        Label1.Text = result
    End Sub

Så får du udskrevet 20 i din label.
Avatar billede torotune Nybegynder
05. november 2007 - 20:30 #7
Hvis du sætter

option explicit on
option strict on

Som erikjacobsen anbefaler er du nødt til at tilføje lidt i kaldet af din Function
af hensyn til dine variabler:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim a As New AgeScript
        Dim result As Integer = a.GetAge(CDate("19-08-1987 00:00:00"))
        Label1.Text = CType(result, String)
    End Sub
Avatar billede fun22 Nybegynder
06. november 2007 - 16:33 #8
Fantastisk.. Smider i et svar??

Kan man lave sådan at f.eks. et login check ligger i en class og så på de sider man vil beskytte har LoginCheck() i sin page_load?

Kan man lave noget ala det?
Avatar billede torotune Nybegynder
06. november 2007 - 16:44 #9
Svar herfra.

- Det kan du godt, men det optimale vil være at kigge på Forms Authentication, membership og profiles. Her definere du f.eks. i din web.config hvilke sider og mapper du vil have beskyttet af login alt efter hvilke rettigheder du har givet den der er logget ind. 

Se evt her:
http://weblogs.asp.net/scottgu/archive/2006/02/24/ASP.NET-2.0-Membership_2C00_-Roles_2C00_-Forms-Authentication_2C00_-and-Security-Resources-.aspx
Avatar billede torotune Nybegynder
06. november 2007 - 16:44 #10
Hov. Svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester