ASP.NET MVC Маршрутизация двух параметров со статической строкой между ними - PullRequest
1 голос
/ 16 января 2010

Это мой маршрут:

routes.MapRoute(null,
    "shelves/{id1}/products/{action}/{id2}",
    new { controller = "Products", action = "List", id1 = "", id2 = ""});

Смысл в том, что вы можете сделать что-то вроде этого:

http://server/shelves/23/products/edit/14

И возможность редактировать продукт 14 на полке 23. При проверке с помощью Route Debugger путь соответствует маршрутизации, но когда я пытаюсь перейти к нему с отключенным Route Debugger, он показывает мне HTTP Ошибка 404 Кто-нибудь знает, почему это происходит?

1 Ответ

3 голосов
/ 16 января 2010

Ну, для начала, эта строка id1 = "" будет проблематичной, потому что вы не можете сделать что-то необязательное, что не в конце.

Я только что попробовал это в моей системе, и она работает просто отлично.

Это маршрут:

routes.MapRoute(
    "shelf-route",
    "shelves/{id1}/products/{action}/{id2}",
    new { controller = "Products", action = "List", id2 = "" }
);

Это контроллер:

public class ProductsController : Controller
{
    public string List(string id1, string id2)
    {
        return String.Format("ID1 = {0}, ID2 = {1}", id1, id2);
    }
}

Я пробовал URL-адреса, такие как:

http://localhost:14314/shelves/23/products/list/14
http://localhost:14314/shelves/23/products

И они работали просто отлично.

Когда вы попробовали URL-адрес с надписью «изменить», вы не забыли сделать действие «Изменить»? Если нет действия Edit, вы получите 404.

...