URL-адрес перезаписи в .Net MVC

Мне интересно, как лучше всего обрабатывать URL в MVC. Например, в моем приложении у меня есть параметр PageController может ссылаться на /website/Page/Index/3 или /website/Page/home . Меню создается динамически с помощью Html.ActionLink () и T4MVC на основе входящих URL-адресов, поэтому я не имею ничего жесткого.

Теперь то, что я хочу сделать, это указать мой URL-адрес и ссылки на что-то более дружественное к SEO, например, /website/our-company/ и у него также могут быть дети, такие как /website/our-company/location/ or /website/our-company/employees/ . Вы поняли эту идею.

Все мои страницы сохранены в BD, и у меня есть свойства FriendlyUrl и parentId в моем объекте.

Каков наилучший способ сделать это?

Хорошо, я взглянул на http://www.asp.net/learn/mvc/tutorial-23-cs.aspx, и я получил его работу. Проще, чем я …

Мои маршруты:

 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute("Pages3", "{url1}/{url2}/{url3}", MVC.Page.RedirectTo(), new { url1 = "", url2 = "", url3 = "" }); routes.MapRoute("Pages2", "{url1}/{url2}", MVC.Page.RedirectTo(), new { url1 = "", url2 = "", url3 = "" }); routes.MapRoute("Pages1", "{url1}", MVC.Page.RedirectTo(), new { url1 = "", url2 = "", url3 = "" }); } 

И теперь мой controller:

 public virtual ActionResult RedirectTo(string url1, string url2, string url3) { if (string.IsNullOrEmpty(url1)) return Home(); var pageModel = new PageModel(); pageModel.CurrentPage = _pageRepo.GetByUrl(url1, url2, url3); BuildMenusAndBreadCrumb(pageModel); ViewData.Model = pageModel; return View(Views.Index); } 

И вот как я визуализую ссылку (например, мое меню):

 

Отлично работает для моих нужд! Если у вас есть какие-либо вопросы или комментарии, не стесняйтесь! Я не уверен, что это лучший способ сделать это, но я доволен этим!

Обратите внимание, что порядок маршрутов важен, а также, если вы не поместили значение по умолчанию и находитесь на странице, где url2 = что-то (сайт / раздел / страница), то все ссылки youre указывают на сайт / новости? Url2 = page взял меня чтобы выяснить, почему этот url2 param был там, но теперь все в порядке!

  • web.config перенаправляет не-www на www
  • Переписать URL-адрес после перенаправления ошибки 404 htaccess
  • htaccess код для удаления расширения и добавить + принудительное завершение косой черты?
  • Как настроить IIS для URL-адреса Переписывание приложения AngularJS в режиме HTML5?
  • Многоязычные сайты с ASP.NET MVC
  • Использование mod rewrite для изменения URL с переменной имени пользователя
  • htaccess переписывает относительные пути
  • Могу ли я использовать запятые в URL-адресе?
  • Давайте будем гением компьютера.