2008-09-25 5 views
1

Dans notre CMS, nous avons un endroit où nous permettons aux utilisateurs de jouer avec leur hiérarchie de sites - déplacer des pages autour, ajouter et supprimer des pages, etc.Comment puis-je - dans ASP.NET enregistrer les informations d'une page lorsqu'un utilisateur quitte la page?

Nous utilisons glisser & déposer pour mettre en œuvre des pages qui se déplacent.

Chaque mouvement doit être enregistré dans la base de données et exporté vers de nombreux fichiers HTML. Si nous faisons cela à chaque coup, cela ralentira les utilisateurs. Par conséquent, nous avons pensé qu'il est préférable de laisser les utilisateurs jouer autant qu'ils le souhaitent, en enregistrant chaque modification dans la base de données, mais uniquement lorsqu'ils quittent la page, pour exporter leurs modifications dans les fichiers HTML. Nous avons pensé à faire en sorte que l'utilisateur clique sur un bouton "publier" quand il est prêt à valider ses modifications, mais nous craignons que les utilisateurs ne se souviennent pas de le faire, parce que, de leur point de vue, ils ont déménagé une page à un nouvel endroit - l'action est terminée. Un autre problème avec le bouton est qu'il est incompatible avec le comportement des autres parties du site (par exemple, lorsqu'un utilisateur déplace un texte à l'intérieur d'une page, les modifications sont automatiquement sauvegardées, car il n'y a qu'un seul fichier HTML à mettre à jour)

Alors, comment pouvons-nous enregistrer automatiquement les changements d'utilisateur en quittant la page?

Répondre

3

Vous devriez avertir l'utilisateur quand il quitte la page avec javascript.

De http://www.siafoo.net/article/67:

Les navigateurs modernes ont un événement appelé window.beforeunload qui est tiré à droite quand un événement se produit qui causerait la page à décharger. Cela inclut de cliquer sur un lien, de soumettre un formulaire ou de fermer l'onglet ou la fenêtre.

Visitez cette page pour un échantillon des travaux dans la plupart des navigateurs:

http://www.webreference.com/dhtml/diner/beforeunload/bunload4.html

Je pense qu'il est une mauvaise pratique pour enregistrer la page sans demander à l'utilisateur d'abord, thats pas comment les pages web normales de travail.

Exemple:

<SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript"> 
<!-- 
function unloadMess(){ 
    mess = "Wait! You haven't finished." 
    return mess; 
} 

function setBunload(on){ 
    window.onbeforeunload = (on) ? unloadMess : null; 
} 

setBunload(true); 
//--> 
</SCRIPT> 
+0

Je comprends votre commentaire sur ce n'est pas la façon dont les pages Web fonctionnent. Cependant, il s'agit d'une application web, et là, si vous faites des choses (par exemple déplacer des choses, ajouter ou supprimer), vous vous attendez à ce que les changements soient sauvegardés sans avoir à cliquer à nouveau –

1

La meilleure façon que je peux penser est de stocker les informations de la page à chaque fois que l'utilisateur déplace les éléments autour de l'utilisation d'Ajax (par exemple avec un événement UpdatePanel, OnUpdated, laissez-le feu un script qui met à jour la configuration de la page des utilisateurs

vous pouvez également -. la mise en œuvre WebParts de .Net fait automatiquement sans intervention par le programmeur (sauf si vous voulez changer le moteur de stockage, il utilise un mdb local par défaut

1

Utilisez un ". Publier "che ckbox/bouton et lorsque l'utilisateur interagit avec la page d'une manière qui les amène à s'éloigner, demandez-leur s'ils veulent publier si cette case n'est pas cochée/le bouton n'est pas cliqué. Sachez qu'il existe des actions (fermeture du navigateur, accès au menu des favoris, etc.) que vous ne voudrez probablement pas ou ne serez pas en mesure d'inviter l'utilisateur. Je les forcerais à cliquer sur un bouton tel que publier.

1

C'est un problème de «formation».

Enregistrer automatiquement les changements lorsqu'ils partent pourrait avoir d'autres ramifications. Par exemple, si un utilisateur ouvre un enregistrement et joue avec et n'a pas l'intention de le changer, il le ferme, comme un document Word, Excel, etc. . Je voudrais que votre site imite ce modèle.Vous devez également garder à l'esprit que le Web est un environnement déconnecté et qu'il n'est pas nécessaire que toutes les applications Web fonctionnent comme une application Windows.

Si l'utilisateur ne clique pas sur le bouton publier/enregistrer, les modifications ne sont pas sauvegardées et c'est à eux de s'en souvenir.

Questions connexes