En ASP.NET MVC, intento crear un enlace que incluya una etiqueta de anclaje (es decir, dirigir al usuario a una página y a una sección específica de la página).
La URL que intento crear debería tener el siguiente aspecto:
<a href="/category/subcategory/1#section12">Title for a section on the page</a>
Mi enrutamiento está configurado con el estándar:
routes.MapRoute("Default", "{controller}/{action}/{categoryid}");
La sintaxis del enlace de acción que estoy usando es:
<%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>
<%} %>
Mi método de controlador es el siguiente:
public ActionResult Subcategory(int categoryID)
{
//return itemList
return View(itemList);
}
Lo anterior devuelve correctamente una URL de la siguiente manera:
<a href="/category/subcategory/1">Title for a section on the page</a>
No puedo entender cómo agregar la parte # section12 . La palabra "sección" es solo la convención que estoy usando para dividir las secciones de la página, y el 12 es el ID de la subcategoría, es decir, child.ID.
¿Cómo puedo hacer esto?
asp.net-mvc
dp.
fuente
fuente
Url
uHtml
con un método personalizado que incluye una forma simple de agregar una cadena de fragmentos.Hay sobrecargas de ActionLink que toman un parámetro de fragmento . Al pasar la "sección 12" como su fragmento, obtendrá el comportamiento que busca.
Por ejemplo, llamando al método LinkExtensions.ActionLink (HtmlHelper, String, String, String, String, String, String, Object, Object) :
fuente
Html.ActionLink()
no funcionaría en ningún escenario: necesitaría usar la[email protected]()
sintaxis de estilo.No recuerdo en qué versión de ASP.NET MVC (ASP.NET MVC 3+ creo) / Razor se introdujo la declaración de etiqueta de parámetros o como se llame (parámetro: x), pero para mí esta es definitivamente la forma correcta de construir un enlace con un ancla en ASP.NET MVC.
Ni siquiera el argumento antipatrón de Ed Blackburns de esta respuesta puede competir con eso.
fuente
Simplemente lo hice así:
fuente
Aquí está el ejemplo de la vida real.
Y la página de destino tiene TABS
fuente
Mi solución funcionará si aplica el ActionFilter al método de acción Subcategoría, siempre y cuando siempre desee redirigir al usuario al mismo marcador:
http://spikehd.blogspot.com/2012/01/mvc3-redirect-action-to-html-bookmark.html
Modifica el búfer HTML y genera una pequeña pieza de javascript para indicar al navegador que agregue el marcador.
¡Puede modificar el javascript para desplazarse manualmente, en lugar de usar un marcador en la URL, por supuesto!
Espero eso ayude :)
fuente
Lo hice y funciona para redirigir a otra vista, creo que si agrega el #sectionLink después, funcionará
fuente