Как исправить ошибку 404 с маршрутами в ASP.NET MVC?

У меня проблема при попытке настроить маршрутизацию для работы с 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

сайт работает правильно и, похоже, попадает в маршрут По умолчанию .

Когда я посещаю:

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);
}

Как мне структурировать свои маршруты так, чтобы все три метода действий выполнялись правильно?

13
задан George Stocker 5 January 2012 в 15:13
поделиться