В ASP.NET MVC я пытаюсь создать ссылку, которая включает в себя тег привязки (то есть направляет пользователя на страницу и в определенный раздел страницы).
URL, который я пытаюсь создать, должен выглядеть следующим образом:
<a href="/category/subcategory/1#section12">Title for a section on the page</a>
Моя маршрутизация настроена со стандартом:
routes.MapRoute("Default", "{controller}/{action}/{categoryid}");
Синтаксис ссылки действия, который я использую:
<%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>
<%} %>
Мой метод контроллера заключается в следующем:
public ActionResult Subcategory(int categoryID)
{
//return itemList
return View(itemList);
}
Выше правильно возвращает URL следующим образом:
<a href="/category/subcategory/1">Title for a section on the page</a>
Я не могу понять, как добавить часть # section12 . Слово «раздел» - это просто соглашение, которое я использую для разбиения разделов страницы, а 12 - это идентификатор подкатегории, то есть child.ID.
Как я могу это сделать?
asp.net-mvc
др.
источник
источник
Url
илиHtml
с помощью специального метода, который включает простой способ добавления строки фрагмента.Существуют перегрузки ActionLink, которые принимают параметр фрагмента . Передача "section12" в качестве вашего фрагмента даст вам поведение, которое вы ищете.
Например, вызов метода LinkExtensions.ActionLink (HtmlHelper, String, String, String, String, String, String, Object, Object) :
источник
Html.ActionLink()
не будет работать ни в одном сценарии - вам нужно будет использоватьhref=@Url.Action()
синтаксис стиля.Я не помню, в какой версии ASP.NET MVC (я полагаю, ASP.NET MVC 3+) / Razor была добавлена функция метки параметра или как она называется (параметр: x), но для меня это определенно правильный способ построить ссылку с якорем в ASP.NET MVC.
Даже аргумент антипаттерна Эд Блэкбернса из этого ответа не может сравниться с этим.
источник
Я просто сделал это так:
источник
Вот пример из реальной жизни
И на целевой странице есть вкладки
источник
Мое решение будет работать, если вы примените ActionFilter к методу действия «Подкатегория», если вы всегда хотите перенаправить пользователя к одной и той же закладке:
http://spikehd.blogspot.com/2012/01/mvc3-redirect-action-to-html-bookmark.html
Он изменяет HTML-буфер и выводит небольшой фрагмент JavaScript, чтобы дать браузеру команду добавить закладку.
Вы можете изменить javascript для ручной прокрутки, вместо использования закладки в URL, конечно!
Надеюсь, поможет :)
источник
Я сделал это, и он работает для перенаправления в другое представление, я думаю, если вы добавите #sectionLink после того, как он будет работать
источник