06. december 2006 - 10:25Der er
6 kommentarer og 1 løsning
[.NET 2.0] Emigrering af FSO fra ASP til ASP.NET
hey der - jeg sidder med en webusercontroller der skal returnere noget CSS. Grunden til at CSS'et ikke 'bare' kan smides i et normalt CSS er at det indeholder ASP-kode der generere CSS'et hver gang siden loades. Derfor havde CSS'et oprindeligt også en .asp-extension men ASP.NET 2.0 understøtter ikke .asp istedet for .css længere og jeg er nu tvunget til at ommøblere min kode for samme resultat. Jeg har derfor besluttet at smide den del af CSS'et som er randomgenereret over i en webusercontroller der så kaster de nødvendige CSS-styles tilbage til default.aspx
Men den ASP-funktion der oprindeligt lå i CSS'et og autogenerede kode skal derfor også emigreres over i webusercontrolleren og jeg kan ikke rigtig se mig ud af det - eller jo. Jeg har splittet webusercontrolleren i to og jeg kunne jo i princippet bare drøne randomfunktionen ud i HTML-delen af webusercontrolleren men jeg ser det seje i at lave en getters/setters (Public Property bla bla) og til det formål skal den gamle FSO-ASP-kode laves til ASP.NET 2.0 - og spørgsmålet er så om det er muligt?
Funktionen er som følger:
<% Function randomPictureGenerator(path) Randomize() Set filesys = CreateObject("Scripting.FileSystemObject") Set demofolder = filesys.GetFolder(Server.MapPath(path)) Set folcoll = demofolder.SubFolders Set demofile = filesys.GetFolder(Server.MapPath(path)) Set fileColl = demofile.Files 'For Each file in fileColl ' If Right(file.Name, 3) = "gif" Then ' i = i + 1 ' End If 'Next 'r = int((i-1 +1 )* Rnd() + 1) 'randomPictureGenerator = r For Each file in fileColl i = i + 1 longString = longString & file.Name & "/" Next
r = int(i*rnd())
sArray = longString aArray = Split(sArray, "/") randomPictureGenerator = aArray(r) End Function
heh :P jeg har liiiidt svært ved at svare for hvis jeg vidste svaret så kendte jeg til svaret på hele mit spørgsmål. Men den funktion oven over er ASP - ren ASP. Og jeg vil så vide hvordan den oversættes til ASP.NET 2.0 hvis muligt. Jeg ved godt det på ingen måde er det samme men et eller andet sted så vil jeg da mene, når jeg kigger på FSO-delen, at den kan laves i ASP.NET 2.0 - og ja det er nok en del af FileInfo men hvordan omskrives toppen af koden:
Set filesys = CreateObject("Scripting.FileSystemObject") Set demofolder = filesys.GetFolder(Server.MapPath(path)) Set folcoll = demofolder.SubFolders Set demofile = filesys.GetFolder(Server.MapPath(path)) Set fileColl = demofile.Files
Dim di As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(Server.MapPath("~/")) Dim dirs As System.IO.DirectoryInfo() = di.GetDirectories() Dim diNext As System.IO.DirectoryInfo
For Each diNext In dirs If diNext.GetFiles("*.aspx").Length > 0 Then Me.ddlFolderList.Items.Add(New ListItem(diNext.Name, diNext.Name)) End If Next
Skulle fylde en DropDownList med mapper som indeholder .aspx filer
fantastisk - jeg prøver når jeg kommer hjem - sidder til forelæsning på uni - men hopper frådende over det når jeg kommer hjem :) men det ser ud til at være det jeg ledte efter
fandt en løsning ved at sætte mig enormt ind i skidtet - men jeg giver gerne point alligevel. Sååehm jeg lukker den lørdag morgen hvis ingen vil ha point inden :)
Iøvrigt nåede jeg frem til:
Public Property randomPictures(ByVal path As String, ByVal typeOfExtension As String) Get myfiles = System.IO.Directory.GetFiles(Server.MapPath(path), "*." & typeOfExtension) r = myfiles.Length i = randomNumber(r) 'lige en note: en funktion der laver randomtal med maxlimet på r _randompictures = System.IO.Path.GetFileName(myfiles(i)) Return _randompictures End Get Set(ByVal value) 'randomPictures(par1, par2) = value
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.