2009-12-15 5 views
9

OK Ich bin neu bei DotNetNuke und muss ein einfaches Modul in DNN schreiben, das einen Artikel für alle anzeigt und dem Administrator das Bearbeiten des Artikels/Hinzufügen ermöglicht ein neuer.Navigieren zwischen DotNetNuke-Modulsteuerelementen mithilfe von EditURL() oder NavigateURL()

Ich habe eine Testseite, die ein DNN-Modul mit einer Moduldefinition und zwei Steuerelementen in dieser Definition enthält. Das Standardsteuerelement zeigt den Artikel basierend auf einem articleID-Feld in der Abfragezeichenfolge an. Sie klicken dann auf eine Schaltfläche, die das Bearbeitungssteuerelement laden und die articleID in der Abfragezeichenfolge übergeben soll.

Wenn ich EditURL() im onClick verwenden, wird das Bearbeitungssteuerelement mit der richtigen articleID geladen, aber mit dem Admin-Skin. Wenn ich Globals.NavigateURL() verwende, wird zwar die korrekte Skin angezeigt, aber mein Bearbeitungssteuerelement wird nicht auf der Seite geladen.

Irgendwelche Hinweise, wie ich was falsch mache oder wie man das Bearbeitungssteuerelement mit der richtigen Haut lädt?

Meine zwei Methoden, um die Bearbeitungssteuerschalt (per Button-Klick-Ereignis) sind im Folgenden aufgeführt:

string newURL = this.EditUrl("articleID", Request.QueryString["articleID"], "EditArticle"); 

     Response.Redirect(newURL); 

und

 string newURL = Globals.NavigateURL(this.TabId, "EditArticle","articleID="+Request.QueryString["articleID"]); 

     Response.Redirect(newURL); 
+3

Für weitere Informationen, wie das funktioniert, können Sie meinen Blog zum Thema überprüfen: http://weblogs.asp.net/briandukes/archive/2009/01/21/understanding-module-isolation-in-dnn. aspx. Letztendlich sollten Sie für Ihre Situation, in der Sie zu einem Bearbeitungssteuerelement navigieren möchten, ohne den Admin-Skin zu verwenden, die Optionen 2 bis 4 in Michael Washingtons "Modulnavigationsoptionen" unter http://adefwebserver.com/dotnetnukehelp/Misc/ModuleNavigationOptions betrachten .htm. – bdukes

+0

Vielen Dank für diese Links, sie sind sehr hilfreich und die DynamicControlsPlaceholder-Kontrolle ist, denke ich, der Weg für zukünftige Module mit Kundenkontakt. – hotbot86

Antwort

4

Eigentlich ist das Sie richtig tun - die editurl in DNN lädt den Admin-Skin - normalerweise basiert dieser Skin darauf, dass jemand Inhalte verwaltet, so dass er alle anderen Module ausblendet und die "Grundlagen" anzeigt. Richtig oder falsch, das ist es.

Wenn Sie dies nicht tun möchten, können Sie einen Schalter im Querystring bereitstellen und ein separates Fenster anzeigen oder ein Multiview-Steuerelement ausführen und verschiedene Ansichten basierend auf dem Schalter in der Abfragezeichenfolge anzeigen.

Es gibt ein paar andere Ansätze wie das Ändern des Inhaltsbereichs zum Bearbeiten von Textbereichen mit Ajax oder die Verwendung von Popup-modalen Stilfenstern.

+0

Danke. Ich nehme an, dass dies für mein aktuelles Bedürfnis akzeptabel ist, da nur Admins diesen Bildschirm sehen würden. Für zukünftige Module, die mehrere kundenorientierte Steuerelemente haben, wäre die beste Methode, das dynamische Laden von Steuerelementen über einen DynamicControlsPlaceholder durchzuführen, wie oben durch bdukes verlinkt. – hotbot86

+0

Danke, dass ich diese Lösung selbst vergessen habe - ja, dass man auch sehr brauchbar ist – braindice

Verwandte Themen