/ / asp.net маршрутизація url mvc - asp.net, asp.net-mvc, asp.net-mvc-маршрутизація

маршрутизація url mvc asp.net - asp.net, asp.net-mvc, asp.net-mvc-маршрутизація

Як я зможу відобразити щось на зразок 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, що має сенс, оскільки він відповідає їй першим правилом маршруту і вважає, що ідентифікатор "", але як я зупиняю таку поведінку?