2009-12-15 5 views
9

OK Je suis nouveau sur DotNetNuke et j'ai besoin d'écrire un module simple dans DNN qui affichera un article pour tout le monde, et permettra à l'administrateur de modifier l'article/ajouter un nouveau.Naviguer entre les contrôles du module DotNetNuke en utilisant EditURL() ou NavigateURL()

J'ai une page de test qui contient un module DNN avec une définition de module et deux contrôles dans cette définition. Le contrôle par défaut affiche l'article basé sur un champ articleID dans la chaîne de requête. Vous cliquez ensuite sur un bouton qui est censé charger le contrôle d'édition et transmettre l'articleID dans la chaîne de requête.

Si j'utilise EditURL() dans onClick, le contrôle d'édition est chargé avec le bon articleID, mais en utilisant le skin admin. Si j'utilise Globals.NavigateURL() alors le skin correct est affiché mais mon contrôle d'édition ne se charge pas dans la page.

Tout indice quant à ce que je fais mal ou comment obtenir le contrôle d'édition de chargement avec le bon skin?

Mes deux méthodes de commutation à la commande d'édition (dans mon bouton événement click) sont listés ci-dessous:

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

     Response.Redirect(newURL); 

et

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

     Response.Redirect(newURL); 
+3

Pour plus d'informations sur comment cela fonctionne, vous pouvez consulter mon blog sur le sujet: http://weblogs.asp.net/briandukes/archive/2009/01/21/understanding-module-isolation-in-dnn. aspx. En fin de compte, pour votre situation où vous souhaitez accéder à un contrôle d'édition sans utiliser l'interface d'administration, jetez un coup d'œil aux options deux à quatre sur «Module Navigation Options» de Michael Washington à l'adresse http://adefwebserver.com/dotnetnukehelp/Misc/ModuleNavigationOptions .htm. – bdukes

+0

Merci pour ces liens, ils sont très utiles et le contrôle DynamicControlsPlaceholder est, je pense, la voie à suivre pour les futurs modules orientés client. – hotbot86

Répondre

4

En fait, vous faites cela correctement - le editurl dans DNN ne charge que l'habillage Admin - Habituellement, cet habillage est basé sur quelqu'un qui administre du contenu, de sorte qu'il supprime tous les autres modules et affiche les «bases». Bien ou mal c'est ce qu'il fait. Si vous ne voulez pas faire cela, vous pouvez fournir un commutateur dans la chaîne de requête et afficher un panneau séparé ou effectuer un contrôle multiview et afficher des vues différentes en fonction du commutateur dans la chaîne de requête.

Il existe quelques autres approches, telles que la modification de la zone de contenu pour l'édition de la zone de texte avec ajax ou l'utilisation de fenêtres de style modal contextuel.

+0

Merci. Je suppose que pour mes besoins actuels, c'est un comportement acceptable car seuls les administrateurs verraient cet écran. Pour les futurs modules qui ont plusieurs contrôles face aux clients, je pense que la meilleure méthode serait de faire le chargement dynamique des contrôles via un DynamicControlsPlaceholder comme lié par bdukes ci-dessus. – hotbot86

+0

Merci d'avoir moi-même oublié cette solution - oui on est très viable aussi – braindice

Questions connexes