пытается отобразить следующий стиль маршрута: http://site.com/username так же, как вы можете сделать http://www.twitter.com/user
Мое первоначальное решение состояло в том, чтобы иметь следующие маршруты:
//site.com/rathboma - maps to user details for rathboma
routes.MapRoute("Users", "{id}", new { controller = "Users", action = "Details" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "oneday" } // Parameter defaults
);
И это работало нормально, пока я не попытался сделать следующее в моем контроллере 'Links':
public ActionResult Details(string id)
{
int newId;
if (!int.TryParse(id, out newId))
return RedirectToAction("Index");
WebLink results = Service.GetWebLink(newId, 5);
if (results == null)
return RedirectToAction("Index");
return View(results);
}
Эти методы RedirectToAction пытаются вернуть браузер на http://site.com/Users (у меня есть пользовательский контроллер) вместо указания на http://site.com/Links/index
Почему это происходит?
Как мне организовать маршруты, чтобы эта работа работала правильно?
Я счастлив пожертвовать http://site.com/links и перейти к http://site.com/links/index, если придется. Но как мне это обеспечить?
Спасибо всем за помощь
EDIT:
Я знаю, что является причиной этого, он пытается перенаправить на http://site.com/links (страница индекса), но ссылки выбираются как имя пользователя и перенаправляются на / users / details, когда он не может найти user 'links' пытается перенаправить на действие IndexController Index, которое отображается на / users, и цикл продолжается ('users' не тот пользователь, которого он может найти, поэтому перенаправляет бесконечно).
Итак, я думаю, что мой подвопрос: как заставить mvc всегда использовать / links / index вместо простого использования / links для страницы индекса?