ASP.NET MVC маршрутизирует два параметра со статической строкой между ними

StackOverflow https://stackoverflow.com/questions/2075874

  •  21-09-2019
  •  | 
  •  

Вопрос

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

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, он показывает мне ошибку HTTP 404.Кто-нибудь знает, почему это происходит?

Это было полезно?

Решение

Ну, для начала, эта строка 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-адрес с надписью "редактировать", вы не забыли выполнить действие редактирования?Если нет действия редактирования, вы получите значение 404.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top