150 votes

Inclure une balise d'ancrage dans un lien d'action ASP.NET MVC Html.

En ASP.NET MVC, j'essaie de créer un lien qui inclut une balise d'ancrage (c'est-à-dire qui dirige l'utilisateur vers une page et une section spécifique de la page).

L'URL que j'essaie de créer devrait ressembler à ce qui suit :

<a href="stackoverflow.com/category/subcategory/1#section12">Title for a section on the page</a>

Mon itinéraire est configuré en fonction de la norme :

routes.MapRoute("Default", "{controller}/{action}/{categoryid}"); 

La syntaxe du lien d'action que j'utilise est la suivante :

<%foreach (Category parent in ViewData.Model) { %>
<h3><%=parent.Name %></h3>
<ul>
<%foreach (Category child in parent.SubCategories) { %>
    <li><%=Html.ActionLink<CategoryController>(x => x.Subcategory(parent.ID), child.Name) %></li>
<%} %>
</ul>
<%} %>

Ma méthode de contrôle est la suivante :

public ActionResult Subcategory(int categoryID)
{
   //return itemList

   return View(itemList);
}

La procédure ci-dessus renvoie correctement l'URL suivante :

<a href="stackoverflow.com/category/subcategory/1">Title for a section on the page</a>

Je ne parviens pas à trouver comment ajouter la fonction #section12 partie. Le mot "section" est simplement la convention que j'utilise pour diviser les sections de la page, et le 12 est l'ID de la sous-catégorie, c'est-à-dire child.ID.

Comment faire ?

0voto

Spikeh Points 1277

Ma solution fonctionnera si vous appliquez l'ActionFilter à la méthode d'action Subcategory, à condition que vous souhaitiez toujours rediriger l'utilisateur vers le même signet :

http://spikehd.blogspot.com/2012/01/mvc3-redirect-action-to-html-bookmark.html

Il modifie le tampon HTML et produit un petit morceau de javascript pour demander au navigateur d'ajouter le signet.

Vous pouvez modifier le javascript pour faire défiler manuellement, au lieu d'utiliser un signet dans l'URL, bien sûr !

J'espère que cela vous aidera :)

0voto

Ahmed Samir Points 117

C'est ce que j'ai fait et cela fonctionne pour la redirection vers une autre vue. Je pense que si vous ajoutez le #sectionLink après, cela fonctionnera.

<a class="btn yellow" href="http://stackoverflow.com/users/Create/@Model.Id" target="_blank">
                                        Add As User
                                    </a>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X