Templaten er lavet ud fra en HTML5 grundskalabon og derefter tilføjet #PAGE_TITLE# osv. tags og derefter bruger vi en replace funktion til at erstatte dem med de informationer der ligger i layout og page tabellen. Vi har så tilføjet #LAYOUT# der i skabelonen hvor selve indholdet skal være som så skal erstattes af den skabelon der ligger i layout. Men her kommer så mit problem.
Jeg vil gerne have flere layoutpositioner i et layout, f. eks.
Så det jeg ønsker er at når man har en streng med forskellige "sektioner" som vist ovenfor, og en streng mere der så skal ind i de forskellige positioner med f. eks. OG at den selv kan regne ud hvor mange layoutpos der skal fyldes, så jeg ikke behøver at definere en X værdi for en repeat funktion. #LAYOUTPOS1_START# Mit indhold til LAYOUTPOS1 #LAYOUTPOS1_END# #LAYOUTPOS2_START# Mit indhold til LAYOUTPOS2 #LAYOUTPOS2_END# #LAYOUTPOS3_START# Mit indhold til LAYOUTPOS3 #LAYOUTPOS3_END#
Meget forvirende måske. Men jeg håber i kan forstå det.
var t = Regex.Matches("<div id=\"header\">#LAYOUTPOS10#</div><div id=\"news\">#LAYOUTPOS2#</div><div id=\"newposts\">#LAYOUTPOS3#</div>", @"#LAYOUTPOS\d{1,}#");
foreach(Match match in t) { Console.WriteLine(match.Captures[0].Value); }
Læg mærke til at jeg udskriver det til Console ...
Et eller andet sted skulle jeg jo se om det virkede.
Håber det kan bruges eller må du fortælle hvad det er du vil på en anden måde, for kan ikke helt se ideen.
og en med som indeholder det "fyld" der skal "fyldes" i layoutet.
#LAYOUTPOS1_START# Mit indhold til LAYOUTPOS1 #LAYOUTPOS1_END# #LAYOUTPOS2_START# Mit indhold til LAYOUTPOS2 #LAYOUTPOS2_END# #LAYOUTPOS3_START# Mit indhold til LAYOUTPOS3 #LAYOUTPOS3_END#
Indholdet
#LAYOUTPOS1_START# <div>Mit dejlige indhold som skal placeres i LAYOUTPOS1</div> #LAYOUTPOS1_END#
skal så placeres i "#LAYOUTPOS1#" i den første streng.
Det der er mit problem er at jeg skal have lavet en LØKKE som den her:
string pageCode = "#LAYOUTPOS1_START#<div>hej med dig1</div>#LAYOUTPOS1_START##LAYOUTPOS2_START#<div>hej med dig2</div>#LAYOUTPOS2_END##LAYOUTPOS3_START#<div>hej med dig3</div>#LAYOUTPOS3_END#"; int startPos = email.LastIndexOf("#LAYOUTPOS1_START#") + "hello my friend".Length + 1; int length = email.IndexOf("#LAYOUTPOS1_START#") - startPos; string layoutcode = email.Substring(startPos, length);
men hvor den bare selv finder ud af hvor mange "LAYOUTPOS1" der er ... altså der hvor 1 tallet er placere
x = 10 // Det er så her der skal laves en count funktion der tæller hvor mange LAYOUTPOS1 der er... while (i < x) { string pageCode = "#LAYOUTPOS1_START#<div>hej med dig1</div>#LAYOUTPOS1_START##LAYOUTPOS2_START#<div>hej med dig2</div>#LAYOUTPOS2_END##LAYOUTPOS3_START#<div>hej med dig3</div>#LAYOUTPOS3_END#"; int startPos = pageCode.LastIndexOf("#LAYOUTPOS1_START#") + "hello my friend".Length + 1; int length = pageCode.IndexOf("#LAYOUTPOS1_START#") - startPos; string layoutcode = email.Substring(startPos, length);
Det er vel også det jeg viser dig hvordan du kan gøre.
Dette stykker finder dine "#LAYOUTPOSx#" hvor x er et tal.
Dette udover de tal den finder. Så er det vel bare at søge i din anden string hvad der skal ind i "#LAYOUTPOSx#".
var t = Regex.Matches("<div id=\"header\">#LAYOUTPOS10#</div><div id=\"news\">#LAYOUTPOS2#</div><div id=\"newposts\">#LAYOUTPOS3#</div>", @"#LAYOUTPOS(\d{1,})#");
foreach(Match match in t) { Console.WriteLine(match.Groups[1].Value); }
Burde du ikke have det i forskellige felter i din DB, så du kan slå op på "#LAYOUTPOS1#" i din DB i stedet for at blande dem sammen og gøre det hele meget mere besværligt?
Min finder bare alle selvom der er hul i rækkefølgen. Du kunne så nøjes med den liste af tal der kommer ud af min måde.
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.