Я думаю об изучении ASP.NET MVC
основы для будущего проекта. Могу ли я использовать расширенную маршрутизацию для создания длинных URL-адресов на основе иерархии карты сайта?
Пример пути навигации:
Начало> Магазин> Товары> Для дома> Kitchen> Cookware> Cooksets> Nonstick
Типичный (я думаю) URL-адрес MVC:
http://example.com/products/category/NonstickCooksets
Желаемый URL:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
Я могу сделать это?
Зак, если я правильно понимаю, ты хочешь неограниченную глубину подкатегорий. Не важно, со времен MVC Preview 3 (думаю, 3 или 4) это было решено.
Просто определите маршрут как
"{Контроллер} / {действие} / {* categoryPath}"
для URL, такого как:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
у вас должен быть ShopController с действием Products:
public class ShopController : Controller
{
...
public ActionResult Products(string categoryPath)
{
// the categoryPath value would be
// "household/kitchen/cookware/cooksets/nonstick". Process it (for ex. split it)
// and then decide what you do..
return View();
}
Маршрутизация MVC позволяет вам в значительной степени определить любую структуру, которую вы хотите, вам просто нужно определить, что каждая из частей означает семантически. Вы можете иметь биты, которые «жестко запрограммированы», например, «shop / products», а затем определить остаток как переменную, «{category} / {subcategory} / {specialty}» и т. Д.
Вы также можете определить несколько маршрутов, которые все отображаются на одну конечную точку, если хотите. По сути, когда URL входит в ваше приложение MVC, он проходит таблицу маршрутизации, пока не найдет подходящий шаблон, не заполнит переменные и не передаст запрос соответствующему контроллеру для обработки.
В то время как маршрут по умолчанию - это простой контроллер, действие, вид установки Id, это, конечно, не то, что вы можете сделать.