Hahne Geschrieben 18. Juni 2009 Geschrieben 18. Juni 2009 Hallo, ich bin gerade am Überlegen wie ich folgendes Problem lösen könnte. Jeder kennt sicherich CMS Systeme wo man über die Adminseite neue Contentseiten hinzufügen kann. Unter anderem kann man bei diesen CMS (Bsp.: DotNetNuke) auch UserControls beim Editieren auf die Contentseite ziehen. Anschließend speichert man diese Contentseite und wenn man diese nun aufruft sieht man das gerade eben eingefügte Usercontrol (z.B. Newsletterformular). Genauso wollte ich das jetzt gerne auch programmieren. Und zwar habe ich ein Formular wo ich meien Contentseite erstellen kann. Dieses Formular unterstützt auch BB-Code (Sprich: [FETT]hier wird fett geschrieben[/FETT]) da ich einen Codeparser eingebaut habe. Nun möchte ich hier aber auch die Möglichkeit haben zu sagen, dass ich gerne das Usercontrol ABC einbinden möchte. Weiss jemand wie man das auf dynamischer Art und Weise lösen kann? Gruß Hahne Zitieren
Guybrush Threepwood Geschrieben 18. Juni 2009 Geschrieben 18. Juni 2009 Deine verschieden User Controls müssen eine gemeinsame Basis haben, am Besten ein Interface das sie implementieren müssen. Dieses Interface beinhaltet dann alle Methoden die die Usercontrols implementieren müssen damit sie eingebetet werden können. Zitieren
TDM Geschrieben 18. Juni 2009 Geschrieben 18. Juni 2009 Du kannst dir auch einfach mal die Klasse DataTemplateSelector anschauen. Der DataContext deiner Contentseite gibt dann halt einfach eine IEnumerable zurück, in der ViewModels (DataContext) der einzelnen Subseiten stehen. Diese wiederum wird als Binding auf ein ItemsControl.ItemSource gesetzt und siehe da, dynamisches Laden. Zitieren
Hahne Geschrieben 19. Juni 2009 Autor Geschrieben 19. Juni 2009 So für das einbinden habe ich jetzt noch eine andere Idee. Ich habe nun dort wo die Seite dargestellt werden soll ein PlaceHolder eingefügt. So habe ich die Möglichkeit mein Usercontrol folgendermaßen dynamisch einzubinden: Control viewControl = LoadControl("~/Module/WebUserControl.ascx"); viewControl.ID = "foobarboo"; PlaceHolder1.Controls.Add(viewControl); Jetzt habe ich meine Seite ja so gestaltet das ich beim Erstellen einer Contentseite mit sogenannten BB-Code ([FETT]Fett schreiben[/FETT]) arbeiten kann. Es soll also nun beim Erstellen einer Seite möglich sein das ich Text schreiben kann, dann dazwischen ein Usercontrol hinzufügen kann und anschließend, wenn es gewollt ist, noch ein Text einfügen kann. Beispiel: Das ist einmal ein [FETT]Beispielcode[/FETT] und hier nach soll ein Control eingebunden werde: [CONTROL]...[/CONTROL] Nach dem Control kommt noch einmal ein [FETT]Text[/FETT]. Nun ist aber Ende im Gelände! Jetzt bin ich am Überlegen wie ich den Text sowie das Control in den Placeholder bekomme. Den Text parse ich ja und schaue was für formatierungen ich dort drin habe. Danach müsste ich nach eingefügten Controls parsen. Aber wie könnte ich das jetzt realisieren, dass ich diese Sachen dem Placeholder hinzufüge. Müsste ja ca. so ausschauen: Label foo = new Label(); foo.Text = "hier der erste Text"; Control viewControl = LoadControl("~/Module/WebUserControl.ascx"); viewControl.ID = "foobarboo"; Label bar = new Label(); bar.Text = "hier der zweite Text"; PlaceHolder1.Controls.Add(foo); PlaceHolder1.Controls.Add(viewControl); PlaceHolder1.Controls.Add(bar); Hat da jemand von euch eine Idee wie man das realisieren könnte? Mir fällt da kein Algorithmus ein. Danke Gruß Hahne Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.