webForumDet fria alternativet

public function

5 svar · 242 visningar · startad av henrikjohansson

henrikjohanssonMedlem sedan maj 2000373 inlägg
#1

Jag har några funktioner som skall vara med på alla sidor och för att göra detta så la jag dom i en modul där jag skrev följande

Imports System.Data.OleDb
Module Modul
    Public Class Funktioner

        Shared Function CropText(ByVal sText As String, ByVal sLength As Integer) As String
            Dim iNewLength As Integer
            If Len(sText) > sLength Then
                iNewLength = InStrRev(sText, " ", sLength + 1)
                sText = Left(sText, iNewLength) & "..."
            End If
            CropText = sText
        End Function

    End Class
End Module

Detta fungerade bra tills jag ville ha en function som skall anropas från en .aspx fil.. i aspx.vb filen så var jag tvungen att inkludera modulen. Måste jag göra det på aspx sidan också isf hur? Testade att inkludera den precis likadant som på aspx sidan men det blir bara error..

henrikjohanssonMedlem sedan maj 2000373 inlägg
#2

löste det genom att lägga funktionerna i en codefile istället

här är koden ifall någon är intresserad

Imports System.Data.OleDb
Namespace CodeFile

    Public Class FunktionerOchSubbar

        Shared Function CropText(ByVal sText As String, ByVal sLength As Integer) As String
            Dim iNewLength As Integer
            If Len(sText) > sLength Then
                iNewLength = InStrRev(sText, " ", sLength + 1)
                If Not iNewLength < sLength Then
                    sText = Left(sText, iNewLength) & "...<br>Läs mer"
                End If
            End If
            CropText = sText
        End Function

        Shared Sub FillObj(ByVal obj As Object, ByVal sSQL As String)
            Dim Con As OleDbConnection = New OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings.Get("dbconn"))
            Dim DA As OleDbDataAdapter = New OleDbDataAdapter(sSQL, Con)
            Dim DT As New DataTable()
            DA.Fill(DT)
            Con.Close()
            obj.DataSource = DT
            obj.DataBind()
        End Sub

    End Class

End Namespace

och för att inkludera på .aspx.vb fil

Imports h2data2.CodeFile.FunktionerOchSubbar

och på aspx

<%@ Import namespace="h2data2.CodeFile.FunktionerOchSubbar" %>
h0lgerMedlem sedan nov. 2002105 inlägg
#3

Jag är inte riktigt säker på att jag förstår frågan men jag antar följande:

Du har skapat en modul i en egen dll som innehåller en klass. Du vill anropa din moduls funktioner från dina aspx-sidor.

Om detta stämmer så skall du göra följande:

- Lägg till din dll under References genom att högerklicka på References i solution explorer och välja Add Reference.

I din kod (aspx.vb) kan du sedan skapa instanser till din modul genom t.ex.

Dim objFunktioner as new Modul.Funktioner

s = objFunktioner.CropText("", 2)
henrikjohanssonMedlem sedan maj 2000373 inlägg
#4

Vad är fördelen med att lägga det i en dll?

NETworkMedlem sedan juni 20011 679 inlägg
#5

henrikjohansson skrev:

Vad är fördelen med att lägga det i en dll?

Lätt att återanvända. Behöver du modulen i ett annat projekt så behöver du bara importera den dit. Dessutom har du koden på ett ställe vilket gör det betydligt smidigare att ändra, bygga ut, rätta buggar etc. Bland annat...

henrikjohanssonMedlem sedan maj 2000373 inlägg
#6

ok.. låter som en ganska bra ide att använda sig av en dll då..

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb