---
title: "ASP.NET - samlade koder"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/89484-asp-net-samlade-koder"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "m_soderlund"
published: "2003-11-02T17:14:48.000Z"
updated: "2003-11-07T09:14:42.000Z"
replies: 15
views: 650
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/89484-asp-net-samlade-koder"
---

# ASP.NET - samlade koder

## #1 — m_soderlund, 2003-11-02T17:14Z

Jag gjorde för ett par dagar sen i ordning en sida med koder som jag använder mer frekvent i ASP.NET. Sidan kan ni hitta här: <https://www.dileno.hel.nu/aspnet>

Det är inget speciellt, men kan väl så funktionellt. :)

Permalänk: https://www.webforum.nu/p/89484

## #2 — SPiN, 2003-11-02T17:19Z

Vad använder du för teckenkodning? Svenska tecken fungerar inte för mig med Mozilla Fb, sätt charset till ISO-8859-1 så bör det bli bättre. :)

Permalänk: https://www.webforum.nu/p/1196523

## #3 — Walker, 2003-11-02T21:53Z

Hej

Trevliga sida.

Jag använder ett program som heter [Code Library](http://myweb.hinet.net/home4/s630417/)  som är suveränt enligt mig. Det fina med detta program är att man kan exportera allt som man lagrar i det och synka med exempelvis en webbservices. Nu vet jag inte om det finns någon sådan har webbtjänsten men det hade varit grymt trevligt om man var ett gäng som knopade ihop en sida där man sedan kunde skicka upp sina tips och dokument, sen kan man ladda ner dem och importera dem till code lib om man vill ha dem där. 

Kika på programmet, webbsidan är lite weird men när man väl installerat det så förstår man hur det fungerar. 

/w

Permalänk: https://www.webforum.nu/p/1196726

## #4 — PatrikB, 2003-11-02T22:26Z

Aja baja m_soderlund, ;)

inte ska du väl använda Response.Write inne i olik klasser ....

I ASP.NET är det väl tänkt att man ska gå ifrån Response.Write (Classic ASP teknik) och binda sådan data till andra kontroller som tex en Literal, en Label etc.

cya,
/PatrikB

Permalänk: https://www.webforum.nu/p/1196745

## #5 — m_soderlund, 2003-11-03T10:44Z

En del av koden i pagingen skrev jag precis efter att jag börjat med ASP.NET, PatrikB, och således hade jag inte så stor kunskap i om jag skulle använda Response.Write eller ej. :)
Jag har ännu inte fixat koden, har ej använt den på flera månader, men när jag behöver en bättre kod så fixar jag det (om inte nån annan fixar det först ;)). :)

Permalänk: https://www.webforum.nu/p/1196945

## #6 — Gladh, 2003-11-03T12:05Z

Då kan jag lägga till att man skall göra Dispose() på de objekt som har en sådan funktion inlagd.

Hört rykten om att om man gör Close() så görs Dispose() och om man gör Dispose() så görs Cloes(). Har dock inte lyckas få det bekräftat. Så så länge är mitt råd att alltid göra Dispose() på objekt som har en sådan method.

\- M

Permalänk: https://www.webforum.nu/p/1196985

## #7 — NETwork, 2003-11-03T13:02Z

> **Gladh skrev:**
>
> Då kan jag lägga till att man skall göra Dispose() på de objekt som har en sådan funktion inlagd.
> \- M

Tar inte GC:n hand om det egentligen?

Permalänk: https://www.webforum.nu/p/1197008

## #8 — Engine^, 2003-11-03T15:06Z

> **Gladh skrev:**
>
> Hört rykten om att om man gör Close() så görs Dispose() och om man gör Dispose() så görs Cloes(). Har dock inte lyckas få det bekräftat. Så så länge är mitt råd att alltid göra Dispose() på objekt som har en sådan method.
> 
> \- M

> **MSDN skrev:**
>
> Because the Dispose method must be called explicitly, objects that implement IDisposable must also implement a finalizer to handle freeing resources when Dispose is not called. By default, the garbage collector will automatically call an object's finalizer prior to reclaiming its memory. However, once the Dispose method has been called, it is typically unnecessary for the garbage collector to call the disposed object's finalizer. To prevent automatic finalization, Dispose implementations can call the GC.SuppressFinalize method.

Den första meningen tolkar jag att ett anrop till Close() inte innebär att Dispose() körs, men ett anrop till Dispose() ger en implicit Close() på objektet (om metoden finns). Detta ska då hända i [Object.Finalize()](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemobjectclassfinalizetopic.asp) metoden om jag förstår det riktigt. Vilket, som **NETwork** sa, sker i GC:n.

Permalänk: https://www.webforum.nu/p/1197062

## #9 — niko, 2003-11-03T15:20Z

> **Engine^ skrev:**
>
> Den första meningen tolkar jag att ett anrop till Close() inte innebär att Dispose() körs, men ett anrop till Dispose() ger en implicit Close() på objektet (om metoden finns).

Nja. *Dispose* är ju bara en tom stubbfunktion i *IDisposable*. Om *Dispose* anropar *Close* eller tvärtom avgör man själv när man skriver implementationen. Är det sen frågan om klasser man inte skrivit själv så får man helt enkelt titta i dokumentationen/experimentera för att ta reda på vad som gäller från fall till fall.

Permalänk: https://www.webforum.nu/p/1197074

## #10 — Gladh, 2003-11-03T19:36Z

> Tar inte GC:n hand om det egentligen?

Jo.. men...

För att göra en lång histora om GC och minnet i .NET så är det så här. 

Om ett .NET objekt innehåller referenser till externa objekt, så som filhantering, databaser osv osv.. Så försvinner inte objektet helt och hållet första gången GC körs, utan objekt läggs i en speciell lista (så man inte tar bort referenserna till de externa objekten). Och nästa gång GC körs så tas objektet bort helt.

Det betyder att det behövs 2 GC för att en SqlConnection skall försvinna helt från minnet. Om du då själv gör en Dispose() så tar den hand om den "Första GC" och det endast kommer att behöva en GC för att objektet skall försvinna helt.

Vilket gör att man spara minne.

> Nja. Dispose är ju bara en tom stubbfunktion i IDisposable. Om Dispose anropar Close eller tvärtom avgör man själv när man skriver implementationen. Är det sen frågan om klasser man inte skrivit själv så får man helt enkelt titta i dokumentationen/experimentera för att ta reda på vad som gäller från fall till fall.

Det stämmer, det är dock kutym att göra på något sätt. Själv fick jag lära mig att man gör en Dispose i Close om det är möjligt. Det jag tänkte mest på var hur MS har implementerat sina Close(). Alltså om det räcker med att kalla på close() och så kallas Dispose() automatiskt.

Men helt klart är att det är skillnad från leverantör till leverantör.

\- M

Permalänk: https://www.webforum.nu/p/1197222

## #11 — niko, 2003-11-04T10:35Z

> **Gladh skrev:**
>
> Det stämmer, det är dock kutym att göra på något sätt. Själv fick jag lära mig att man gör en Dispose i Close om det är möjligt.

Ja, det är en bra fråga. Jag uppfattar nog också att man ofta gör en *Dispose*,  i *Close* (och ibland tom inget annat). Men samtdigt kan klasser representera väldigt olika saker: kunder, filhandtag, COM-portar, bankkonton osv .., så den exakta innebörden/tolkningen av *Close* kan nog variera väldigt mycket från fall till fall.

Två rekommendation angående *Dispose*/*Close* som jag läst hos J. Richter:

1\. Både *Dispose* och *Close* ska gå att anropa mer än en gång utan att ett fel kastas.

2\. Undvik (om möjligt) behovet av att anropa *Dispose* och *Close* explicit. Se istället till att det görs i *Finalize*.

Permalänk: https://www.webforum.nu/p/1197530

## #12 — Engine^, 2003-11-04T13:18Z

Humm... kan man alltså tolka *Dispose* som en flagga, och när GC körs kontrolleras det ifall *Dispose* har anropats för objektet och då körs *Finalize* på det. Problem uppstår ju när det är unmanaged code med i spelet, men då är det ju "bara" att hålla sig till J. Richters riktlinjer.

Referenser
[GC Class](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemgcclasstopic.asp)
[Object.Finalize Method](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemobjectclassfinalizetopic.asp)
[IDisposable.Dispose Method](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemidisposableclassdisposetopic.asp)

Efter att ha läst igenom dessa kan jag säga att det är inte speciellt enkelt att följa resonemanget över ett objekts livstråd. *Finalize* tycker jag gör det hela väldigt rörigt. Men det är ju på det här sättet man lär sig något. :)

Permalänk: https://www.webforum.nu/p/1197643

## #13 — m_soderlund, 2003-11-05T12:40Z

> **SPiN skrev:**
>
> Vad använder du för teckenkodning? Svenska tecken fungerar inte för mig med Mozilla Fb, sätt charset till ISO-8859-1 så bör det bli bättre. :)

Jag hade redan från början satt charset till ISO-8859-1. Konstigt.

Permalänk: https://www.webforum.nu/p/1198105

## #14 — m_soderlund, 2003-11-06T13:42Z

> **PatrikB skrev:**
>
> Aja baja m_soderlund, ;)
> 
> inte ska du väl använda Response.Write inne i olik klasser ....
> 
> I ASP.NET är det väl tänkt att man ska gå ifrån Response.Write (Classic ASP teknik) och binda sådan data till andra kontroller som tex en Literal, en Label etc.
> 
> cya,
> /PatrikB

Nu är allt sånt fixat! Med lite hjälp av en StringBuilder (tack Dino) och en literal så fixade jag koden så att den blev lite bättre (pagingen). Dessutom så lade jag till en repeater i stället för en datalist.

Permalänk: https://www.webforum.nu/p/1198640

## #15 — Dino, 2003-11-06T14:28Z

Angående din stringbuilder. Ändra till.

```
For Pagecounter = 1 To pagedData.PageCount
   If Not pagedData.CurrentPageIndex = PageCounter-1 Then
      sb.Append("<a href=""default.aspx?page=")
      sb.Append(PageCounter-1)
      sb.Append(""">")
      sb.Append(PageCounter)
      sb.Append("</a>")
   Else
      If Not RecsCount <= pagedData.PageSize Then
         sb.Append(Pagecounter)
         sb.Append(" ")
      End If
   End If
Next
```

Permalänk: https://www.webforum.nu/p/1198662

## #16 — m_soderlund, 2003-11-07T09:14Z

Tack Dino, jag misstänkte nästan att man skulle göra så.. :)
Fixat!

Förresten, ser ni att jag använder Dispose() i koden för pagingen? :)

Permalänk: https://www.webforum.nu/p/1199013

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/89484-asp-net-samlade-koder
