12
votes

Les publications ASP.NET perdent le hachage dans l'URL

sur une page ASP.NET avec une tabstrip, j'utilise le code de hachage dans l'URL pour garder une trace de l'onglet que je suis sur (à l'aide du Plugin BBQ JQuery ). Par exemple:

http://mysite.com/foo/home


0 commentaires

3 Réponses :


17
votes

Le problème est que le post-pack passe à l'URL de la page en cours, qui est définie dans l'action du formulaire sur la page. Par défaut, cette URL est sans #HASH dans ASP.NET, et c'est automatiquement défini par ASP.NET, vous n'avez aucun contrôle sur celui-ci.

Vous pouvez ajouter le #hash à l'attribut d'action Forms avec JavaScript: xxx

ou, si vous mettez en train de mettre à jour une action avec un hachage déjà compris: xxx

Assurez-vous d'exécuter ce code sur la fenêtre.Load et vous cible le bon identifiant


1 commentaires

Merci, je vais essayer ça.



2
votes

J'ai essayé de mettre le code de La réponse de Willem dans une fonction JS qui a été appelée à chaque fois qu'un nouvel onglet a été activé. Cela n'a pas fonctionné car il a continué à ajouter un élément supplémentaire #hash à l'URL à chaque fois que j'ai changé d'onglets.

Mon URL a fini par ressembler à http: //myurl.example. com / home # tab1 # tab2 # tab3 # onglet2 # onglet2 (etc.)

J'ai modifié le code légèrement pour supprimer tout composant #hash de l'URL dans le ACTION ACTION AVANT APPINIER DU NOUVEAU ON NOUVEAU. Il utilise également JQuery pour trouver l'élément. xxx

espère que cela aide quelqu'un!


1 commentaires

Méfiez-vous, la balise action sera mise à jour lorsque vous utilisez un updatepanel , vous devez donc le faire dans la requête du message Fin (code> Evénement JavaScript, trop.



1
votes

J'ai une autre solution, mise en œuvre et testée avec chrome, c'est-à-dire et safari.

J'utilise l'objet "LocalStorage" et cela suppose que tous les navigateurs prennent en charge localStorage.

sur le Cliquez sur l'événement de l'onglet, je stocke la valeur actuelleTab vers le stockage local. xxx


0 commentaires