Як я зможу відобразити щось на зразок domain.com/username? Проблема полягає в тому, що я думаю, що маршрутизація MVC шукає контролер, щоб визначити, як він повинен обробляти запит відображення.
Я досить новачок у ASP.NET MVC.
Однак, виходячи з навчальних посібників, механізм маршрутизації здається досить жорстким.
Відповіді:
6 за відповідь № 1Це насправді досить гнучко, я думаю, що ви знайдете його досить потужним із додатковим досвідом роботи. Ось як ви можете робити те, що хочете:
routes.MapRoute("MyRoute",
"{username}",
new { controller = "Home", action = "Index", username = "" });
При цьому вибирається контролер за замовчуванням ("Головна") і метод дій за замовчуванням ("Індекс") і передається йому параметр ім'я користувача (який за замовчуванням встановлено "").
Але обережно з цим маршрутом, тому що це будевідповідати практично будь-якій URL-адресі, яку ви можете собі уявити. Це повинен бути останній маршрут, який ви додали до своїх карт, щоб інші маршрути мали шанс спочатку за URL-адресою.
1 для відповіді № 2
Щоб додати до матки - я б пішов цим маршрутом (каламбур призначений):
routes.MapRoute("MyRoute",
"user/{username}",
new { controller = "User", action = "Index", username = "" });
Це дозволить зіставити URL-адреси на: domain.com/user/{username}
І ви завжди можете змінити контролер і дію на все, що завгодно.
1 для відповіді № 3
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("MyRoute",
"{id}",
new { controller = "Home", action = "User", id = "" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Якщо у мене є щось подібне, то я в змозівказуйте на щось на зразок mydomain.com/userid, а також mydomain.com/home/index/1. Однак, якщо я просто заходжу на mydomain.com, він переходить на сторінку, що використовується для userid, що має сенс, оскільки він відповідає їй першим правилом маршруту і вважає, що ідентифікатор "", але як я зупиняю таку поведінку?