Jeg sidder og skal lave en adrotator der kan rotere flash bannere, ved selv at gennemse undermapper, der har samme navn som noget af URL'en. Indtil videre har jeg fundet noget C#-kode, der udbygger den alm. AdRotator, ved at give den funktionaliteten til at hente flash reklamer ind. Koden har jeg fundet her: "http://blog.sotirovic.com/index.php/asp-net-csharp-code/web-controls/banner-rotator-adrotator/"
Nu vil jeg så gerne have koden til at lede i undermapper efter alle flash reklamer, der nu måtte være i hver enkelt undermappe, i stedet for at bruge XML fil som advertisement fil.
Jeg har fundet frem til at klassen Request.RawURL, kan forkorte en URL fra eks.: "http://www.testside.dk/produkter.aspx", til bare at være "/produkter.aspx". Jeg har påtænkt at undermapperne, skal hedde det samme som mine undersider på mit website. Jeg bruger Umbraco som CMS system, og bruger ikke querystrings i mine URL'er. Har i bedre forslag, så kom gerne med dem :)
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Jeg er ikke helt klar over hvad dit spørgsmål går på ... lyder jo som om du har løst til problem, og jeg kan desvære ikke se nogle direkte spørgsmål i din tekst ... ej heller et eneste spørgsmålstegn ...
Mit problem består i, at jeg skal have lavet et stykke kode der bruger en bid af min url, for at finde undermapper med tilsvarende navne. Vil bruge Request.RawURL til at forkorte en URL fra "http://www.testside.dk/produkter.aspx" til "/produkter.aspx". Eks. hvis min underside så hedder produkter.aspx, så skal min fysiske undermappe på webserveren hedde ligeledes. Skal have have programmeret det sådan, at den første "/" fjernes, og endelsen ".aspx" kommer væk. Efter dette er gjort, skal jeg finde ud af hvordan der kan ledes efter alle flash reklamer i den undermappe, hvor min adrotator så vilkårligt henter én reklame ind af gangen - Hvordan skal denne C#-kode skrives? :)
Jeg er ikke en haj til C#, så har lidt brug for at finde ud af hvordan jeg laver noget mere kode, der så igen udbygger det assembly fra Sotirovics hjemmeside.
Nej nej det forlanger jeg heller ikke :) så skulle du have betaling for det. Men vil gerne have lidt råd og vejledning. Ved hvordan systemet skal fungere, bare ikke hvordan jeg skal skrive koden helt præcist.
string dir = Request.RawUrl; dir = dir.Remove(dir.IndexOf('.')).Remove(0, 1); btnSearch.Text = dir; System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Server.MapPath(dir));
List<System.IO.FileInfo> list = new List<System.IO.FileInfo>(); if (di.Exists) { foreach (System.IO.FileInfo fi in di.GetFiles()) { list.Add(fi); } }
Så har du en liste med de fil objecter som ligger i mappen med samme navn som siden ...
jeg har fået det til at virke så langt, at jeg med den kode du gav mig kan læse fra URL'en hvilken sti jeg skal bruge. Nu mangler jeg kun at finde ud af hvordan man trækker bestemte værdier ud af det "list" objekt på baggrund af en Random funktion. Så jeg vilkårligt læser en ny flash reklame ind, hver gang der klikkes på det samme link i menuen. Det lader nemlig ikke til man bare kan bruge GetValue, når man bruger en List???
using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { string dir = Request.RawUrl; dir.Remove(dir.Length - 5); dir = dir.Remove(dir.IndexOf('.')).Remove(0, 1); System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Server.MapPath(dir));
System.IO.FileInfo fi = new System.IO.FileInfo();
List<System.IO.FileInfo> list = new List<System.IO.FileInfo>();
TextBox1.Text = di.Exists.ToString(); // if (di.Exists) { foreach (System.IO.FileInfo fi in di.GetFiles()) { list.Add(fi); } System.Random MyRandom = new System.Random(); int tmpInt = MyRandom.Next(list.Count);
using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { string dir = Request.RawUrl; dir.Remove(dir.Length - 5); dir = dir.Remove(dir.IndexOf('.')).Remove(0, 1); System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Server.MapPath(dir));
List<System.IO.FileInfo> list = new List<System.IO.FileInfo>();
TextBox1.Text = di.Exists.ToString(); // if (di.Exists) { foreach (System.IO.FileInfo fi in di.GetFiles()) { list.Add(fi); } System.Random MyRandom = new System.Random(); int tmpInt = MyRandom.Next(list.Count); // (list.Count);
Kan det lade sig gøre, at jeg trækker FileInfo værdierne ud som strings i stedet for integers. Så jeg bare kan smide en flash reklame ind med eks. navnet "ViTesterForDig.swf" i en undermappe, i stedet for at kalde dem "1.swf", "2.swf", "3.swf" osv.? Og så vilkårligt få en ny string til at blive konkateneret med mappen hvor den skal lede.
eks. "produkter/ViTesterForDig.swf", hvor "produkter" er mappenavnet (variablen dir), og "ViTesterForDig.swf" er filnavnet (en ny variabel, eks. filename)
Jeg læste mig også frem til at en List er bedre at bruge, fordi den er type safe, og man derfor kan bestemme at det KUN skal være f.eks. swf-filer man smider ind i sin AdRotator.
Har du nogen idé om, hvorfor jeg får kompileringsfejlene:
BannerRotator.cs(183,26): error CS0103: The name 'Request' does not exist in the current context BannerRotator.cs(187,70): error CS0103: The name 'Server' does not exist in the current context
Koden er nu som følger:
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
private bool SetDimensions(FlashControl flash) { int num; int num2; if (this.selectedAdvertArgs.AdProperties == null) { return false; } string s = (string)this.selectedAdvertArgs.AdProperties[this.widthKeyPropertyName]; string str2 = (string)this.selectedAdvertArgs.AdProperties[this.heightKeyPropertyName]; if (!int.TryParse(s, out num)) { return false; } if (!int.TryParse(str2, out num2)) { return false; } flash.Width = Math.Abs(num); flash.Height = Math.Abs(num2); return true; }
// Properties protected bool IsFlashBanner { get { if (!this.isFlashBanner.HasValue) { this.isFlashBanner = false; if (this.selectedAdvertArgs == null) { return this.isFlashBanner.Value; } if (this.selectedAdvertArgs.ImageUrl == null) { return this.isFlashBanner.Value; } if (this.selectedAdvertArgs.ImageUrl.EndsWith(this.flashFileExtension, true, CultureInfo.InvariantCulture)) { this.isFlashBanner = true; return true; } } return this.isFlashBanner.Value; } }
[DefaultValue(""), Browsable(true), Category("Behavior")] public string NavigateUrlBase { get { return this.navigateUrlBase; } set { this.navigateUrlBase = value; } }
[DefaultValue("opaque"), Category("Behavior"), Browsable(true)] public string WMode { get { return this.wmode; } set { this.wmode = value; } }
protected void Page_Load(object sender, EventArgs e) { string dir = Request.RawUrl;//System.Web.HttpRequest(Request.RawUrl)); dir.Remove(dir.Length - 5); dir = dir.Remove(dir.IndexOf('.')).Remove(0, 1);
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Server.MapPath(dir));
ArrayList stringList = new ArrayList(); { foreach (System.IO.FileInfo fi in di.GetFiles()) { stringList.Add(fi); } System.Random MyRandom = new System.Random(); int tmpInt = MyRandom.Next(stringList.Count); FileName = dir + "/" + stringList[tmpInt].ToString();
Okay jeg fandt ud af det...Nu har jeg kun problemer med at manifestdestination og reference ikke svarer til hinanden, når jeg prøver at bruge den nye dll fil (assembly'et) på min eksisterende default.aspx. Ser om det vil hjælpe at lave et nyt projekt (en ny default.aspx).
HttpContext.Current.Request og HttpContext.Current.Server
Synes godt om
Ny brugerNybegynder
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.