Подобные Твиттеру маршруты в приложении ASP.NET MVC 2 - PullRequest
4 голосов
/ 21 августа 2010

Я бы хотел настроить маршруты следующим образом:

xyz/ отображается на один метод действия без параметров, но xyz/{username} отображается на другое действие (в том же контроллере или нет, не имеет значения), которое принимает аргумент с именем username типа string Вот мои маршруты до сих пор:

routes.MapRoute(
    "Me",
    "Profile",
    new { controller = "Profile", action = "Me" }
);

routes.MapRoute(
    "Profile",
    "Profile/{username}",
    new { controller = "Profile", action = "Index" }
);

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

В настоящее время, если я перехожу на /Profile/someuser, действие Index в контроллере профиля выполняется должным образом. Но если я перейду к /Profile/ или /Profile, я получу 404.

Что дает?

1 Ответ

4 голосов
/ 21 августа 2010

У меня отлично работает. Я полагаю, у вас нет Me метода действия в вашем Profile контроллере?

Я пробовал со следующими маршрутами:

routes.MapRoute(
    "Me",
    "Profile",
    new { controller = "Home", action = "Me" }
);

routes.MapRoute(
    "Profile",
    "Profile/{username}",
    new { controller = "Home", action = "Index" }
);

С методами действий Index и Me, определенными так:

public ActionResult Index(string username) {
   ViewData["Message"] = username;
   return View();
}

public ActionResult Me() {
   ViewData["Message"] = "this is me!";
   return View( "Index" );
}

Я использовал вид по умолчанию Home/Index.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...