У меня возникла проблема с попыткой получить маршрутизацию для работы с ASP.NET MVC 3.0. У меня объявлены следующие маршруты:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "RsvpForm", id = UrlParameter.Optional }
);
routes.MapRoute(
"TestRoute",
"{id}",
new { controller = "Product", action = "Index3", id = UrlParameter.Optional }
);
routes.MapRoute(
"TestRoute2",
"{action}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Когда я посещаю:
http://localhost
Сайт работает правильно, и он попадает в маршрут Default
.
Когда я посещаю:
http://localhost/1
Я получаю 404:
Ошибка сервера в приложении "/".
Ресурс не найден. Описание: HTTP 404. Ресурс, который вы ищете (или его зависимости), мог быть удален, изменилось его имя или Временно недоступен. Просмотрите следующий URL-адрес и сделайте что это правильно написано.
Запрошенный URL:/1
Ниже перечислены действия, которые соответствуют этим маршрутам:
public ActionResult Index3(int? id)
{
Product myProduct = new Product
{
ProductID = 1,
Name = "Product 1 - Index 3",
Description = "A boat for one person",
Category = "Watersports",
Price = 275M
};
Product myProduct2 = new Product
{
ProductID = 2,
Name = "Product 2 - Index 3",
Description = "A boat for one person",
Category = "Watersports",
Price = 275M
};
ViewBag.ProcessingTime = DateTime.Now.ToShortTimeString();
if (id == 1)
return View("index", myProduct);
else
return View("index", myProduct2);
}
Как мне структурировать маршруты, чтобы все три метода действий попали правильно?