No ASP.NET MVC, estou tentando criar um link que inclua uma marca âncora (ou seja, direcionando o usuário para uma página e uma seção específica da página).
O URL que estou tentando criar deve ter a seguinte aparência:
<a href="/category/subcategory/1#section12">Title for a section on the page</a>
Meu roteamento é configurado com o padrão:
routes.MapRoute("Default", "{controller}/{action}/{categoryid}");
A sintaxe do link de ação que estou usando é:
<%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>
<%} %>
Meu método de controlador é o seguinte:
public ActionResult Subcategory(int categoryID)
{
//return itemList
return View(itemList);
}
O texto acima corretamente retorna um URL da seguinte maneira:
<a href="/category/subcategory/1">Title for a section on the page</a>
Não consigo descobrir como adicionar a parte # section12 . A palavra "seção" é apenas a convenção que estou usando para dividir as seções da página, e o 12 é o ID da subcategoria, ou seja, child.ID.
Como posso fazer isso?
asp.net-mvc
dp.
fonte
fonte
Url
ouHtml
com um método personalizado, que inclui uma maneira simples de adicionar uma sequência de fragmentos.Existem sobrecargas do ActionLink que usam um parâmetro de fragmento . Passando "section12" como seu fragmento, você terá o comportamento que procura.
Por exemplo, chamando o método LinkExtensions.ActionLink (HtmlHelper, String, String, String, String, String, String, Objeto, Objeto) :
fonte
Html.ActionLink()
não funcionaria em nenhum cenário - você precisaria usar a[email protected]()
sintaxe do estilo.Não me lembro em qual versão do ASP.NET MVC (ASP.NET MVC 3+ eu acredito) / Razor foi introduzida a declaração de parâmetrolabel ou como quer que seja chamada (parâmetro: x), mas, para mim, essa é definitivamente a maneira correta de crie um link com uma âncora no ASP.NET MVC.
Nem mesmo o argumento antipadrão de Ed Blackburns dessa resposta pode competir com isso.
fonte
Eu apenas fiz assim:
fonte
Aqui está o exemplo da vida real
E a página de destino tem TABS
fonte
Minha solução funcionará se você aplicar o ActionFilter ao método de ação Subcategoria, desde que você sempre deseje redirecionar o usuário para o mesmo marcador:
http://spikehd.blogspot.com/2012/01/mvc3-redirect-action-to-html-bookmark.html
Ele modifica o buffer HTML e gera um pequeno pedaço de javascript para instruir o navegador a anexar o marcador.
Você pode modificar o javascript para rolar manualmente, em vez de usar um marcador na URL, é claro!
Espero que ajude :)
fonte
Eu fiz isso e funciona para redirecionar para outra visualização. Se você adicionar o #sectionLink depois, ele funcionará
fonte