Avatar billede troublemaker Nybegynder
22. september 2005 - 08:32 Der er 9 kommentarer og
1 løsning

Funktions fil

Jeg havde i Classic ASP en fil hvor alle mine funktioner som blev brugt på flere sider var i. Hvordan kan man gøre dette med ASP.NET og så inkludere den på siden?
Avatar billede snepnet Nybegynder
22. september 2005 - 13:34 #1
asp.net er oo fra ende til anden, så du laver dig en klasse og lægger de metoder ind du har brug for.
klassen bruger du så de steder hvor funktionliteten skal bruges.
asp og asp.net har ikke en brik med hinanden at gøre, så pas på med at forudsæt at der er samme fremgangsmåde de to teknologier imellem.
mvh
Avatar billede snepnet Nybegynder
22. september 2005 - 13:39 #2
du kan tage et lille kig her:
http://www.w3schools.com/aspnet/default.asp

og så ville det være godt, hvis du kiggede på objektorienteret programmering - det er svært at få noget til at lykkes for alvor med .NET uden.

mvh
Avatar billede arne_v Ekspert
22. september 2005 - 14:59 #3
det er rigtigt at .NET er objekt orienteret fra inderst til yderst

men man kan godt lave funktioner udenfor klasser i både VB.NET og managed C++

og principielt bør de også kunne bruges fra ASP.NET

men bedste råd er absolut at gå OO vejen

og som absolut minimum bruge klasser med static (C#) / shared (VB.NET) metoder
Avatar billede troublemaker Nybegynder
22. september 2005 - 14:59 #4
( asp og asp.net har ikke en brik med hinanden at gøre )
Det ved jeg godt det ikke har men derfor kan man jo stadig inkludere en fil eller klasse som du siger, men mit problem er nu bare at jeg ikke ved hvordan man bruger det hele i asp.net.

Jeg har prøvet mange forskellige ting men der er intet jeg rigtigt kan få til at virke.
En af de ting jeg har prøvet er en klasse (Funktiner.vb) som så er blevet lagt i App_Code mappen men jeg kan ikke finde ud af hvordan man bruger filen. Jeg har prøvet at importe den i toppe med <%@...%> osv. men intet virker.

Kunne du ikke fortælle hvordan det virker?
Avatar billede snepnet Nybegynder
22. september 2005 - 15:55 #5
Ok - du bruger v2.0... alletiders :o)
Du skal ikke gøre noget specielt for det... du kan lige se et eksempel her:

// en klasse med nogle metoder - belliggende i App_Code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public class SomeFunctions
{
    public string GetString()
    {
        return "string";
    }

    public static string GetStringStatic()
    {
        return "string (static method)";
    }
}


// code-behind (beside)
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lblInstance.Text = new SomeFunctions().GetString();
        lblStatic.Text = SomeFunctions.GetStringStatic();
    }
}

// aspx'en
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblInstance" runat="server"></asp:Label>
        <br />
        <asp:Label ID="lblStatic" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 11:26 #6
Jeg har prøvet lige præcis det der (i vb godt nok) men det siger bare "Type MyFunctions.MinToTime is not defined." Det skal så lige siges at jeg ikke har koden til hver side i en extern fil.

Jeg bruger det i en Repeater sådan her
<%# new MyFunctions.MinToTime(Eval("minuter")) %>

Koden ser sådan her ud

Public Class MyFunctions
    Public Function MinToTime(ByVal Tid As Long) As String
        Dim Dage, Minutter As Long
        Dim Timer As Double

        Dage = 0
        Timer = 0
        Minutter = 0

        Minutter = Tid Mod 60

        Timer = ((Tid - Minutter) / 60)

        MinToTime = Timer & "t " & Minutter & "m"
    End Function
End Class
Avatar billede snepnet Nybegynder
23. september 2005 - 11:32 #7
prøv at lav metoden shared, og fjern new i <%# new MyFunctions.MinToTime(Eval("minuter")) %>
mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 11:56 #8
åhh moi gåd du har gjort det igen :)

Smid et svar og du får os disse points :)
Avatar billede snepnet Nybegynder
23. september 2005 - 12:03 #9
får du her :o)
nu er det jo så heldigvis en metode der kan "tåle" at være shared, men du har også andre muligheder - du kan lige få et eksempel her:

lave en property i din code-behind/beside klasse:

private SomeType _someInstance;
public SomeType SomeIntance
{
  if(_someInstance == null)
    _someInstance = new SomeType();
  return _someInstance;
}

og så en eller anden type du har:

public class SomeType
{
  public string SomeMethod(string someString)
  {
    // return .... whatever string..
  }
}

så kan du:

<%# SomeInstance-SomeMethod(Eval("somestring")) %>

mvh
Avatar billede snepnet Nybegynder
23. september 2005 - 12:03 #10
hov - og et svar :o)
mvh
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