Dans ASP.NET MVC, j'essaie de créer un lien qui inclut une balise d'ancrage (c'est-à-dire, diriger l'utilisateur vers une page et une section spécifique de la page).
L'URL que j'essaie de créer doit ressembler à ceci:
<a href="/category/subcategory/1#section12">Title for a section on the page</a>
Mon routage est mis en place avec le standard:
routes.MapRoute("Default", "{controller}/{action}/{categoryid}");
La syntaxe du lien d'action que j'utilise est:
<%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ôleur est la suivante:
public ActionResult Subcategory(int categoryID)
{
//return itemList
return View(itemList);
}
Ce qui précède renvoie correctement une URL comme suit:
<a href="/category/subcategory/1">Title for a section on the page</a>
Je n'arrive pas à comprendre comment ajouter la partie # section12 . Le mot «section» est simplement la convention que j'utilise pour séparer les sections de page, et le 12 est l'ID de la sous-catégorie, c'est-à-dire child.ID.
Comment puis-je faire ceci?
asp.net-mvc
dp.
la source
la source
Url
ouHtml
avec une méthode personnalisée qui inclut un moyen simple d'ajouter une chaîne de fragment.Il y a des surcharges d'ActionLink qui prennent un paramètre de fragment . Passer "section12" comme votre fragment vous donnera le comportement que vous recherchez.
Par exemple, en appelant la méthode LinkExtensions.ActionLink (HtmlHelper, String, String, String, String, String, String, Object, Object) :
la source
Html.ActionLink()
ne fonctionnerait dans aucun scénario - vous auriez besoin d'utiliser[email protected]()
une syntaxe de style.Je ne me souviens pas dans quelle version d'ASP.NET MVC (ASP.NET MVC 3+ je crois) / Razor la déclaration de paramètre ou quoi que ce soit qui s'appelle (paramètre: x) a été introduite, mais pour moi, c'est certainement la bonne façon de créer un lien avec une ancre dans ASP.NET MVC.
Même l'argument anti-modèle d'Ed Blackburn à partir de cette réponse ne peut rivaliser avec cela.
la source
Je l'ai juste fait comme ceci:
la source
Voici l'exemple réel
Et la page cible a TABS
la source
Ma solution fonctionnera si vous appliquez l'ActionFilter à la méthode d'action Sous-catégorie, tant que vous souhaitez 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 génère 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 ça aide :)
la source
Je l'ai fait et cela fonctionne pour rediriger vers une autre vue, je pense que si vous ajoutez le #sectionLink après cela fonctionnera
la source