kuyucakli Ответов: 2

Asp.net проблема маршрутизации MVC


Привет. У меня проблема с подъемом asp.net mvc.
Как я могу перенаправить :

маршрут - контроллер/действие
{бренд}-машины-цены-и GT; /прайс-лист/PricesByBrand (например : "Тойота-автомобиль-цены")
{цвет}-{бренд}-машины-цены-и GT; /прайс-лист/PricesByColorAndBrand {например : "зеленый-Тойота-автомобиль-цены"}
{modelyear}-car-prices -> /PriceList/PricesByModelYear {например "2005-car-prices"}
{modelyear}-{brand}-car-prices -> /PriceList/PricesByModelYearAndBrand {например "2005-toyota-car-prices"}

когда я маршрутизирую, все маршруты перенаправляют одно и то же действие (страницу).
Как я могу это сделать правильно?

Что я уже пробовал:

routes.MapRoute(
              name: "carprices",
               url: "{brand}-car-prices/{page}",
              defaults: new { controller = "PriceList", action = "PricesByBrand ", brand= UrlParameter.Optional, page = UrlParameter.Optional },
              namespaces: new[] { "MyProject.Controllers" }
          );

            routes.MapRoute(
              name: "colorcarprices",
               url: "{color}-{brand}-car-prices/{page}",
              defaults: new { controller = "PriceList", action = "PricesByColorAndBrand ", color= UrlParameter.Optional, brand= UrlParameter.Optional, page = UrlParameter.Optional },
              namespaces: new[] { "MyProject.Controllers" }
          );

MadMyche

Просто подождите, пока вы не попробуете передать "Даймлер-Бенц" как бренд

2 Ответов

Рейтинг:
2

Jinto Jacob

У вас есть некоторые проблемы в маршрутах



Цитата:
маршрут - контроллер/действие
{бренд}-машины-цены-и GT; /прайс-лист/PricesByBrand (например : "Тойота-автомобиль-цены")
{цвет}-{бренд}-машины-цены-и GT; /прайс-лист/PricesByColorAndBrand {например : "зеленый-Тойота-автомобиль-цены"}
{modelyear}-car-prices -> /PriceList/PricesByModelYear {например "2005-car-prices"}
{modelyear}-{brand}-car-prices -> /PriceList/PricesByModelYearAndBrand {например "2005-toyota-car-prices"}



Вот взять 2 маршрута {brand}-car-prices и {modelyear}-car-prices .
Они имеют одинаковую структуру, и нет способа разделить их.

Та же проблема и с {color}-{brand}-car-prices и {modelyear}-{brand}-car-prices

Порядок правления также важен

когда правило {brand}-car-prices приходите первым, чтобы он соответствовал любому другому маршруту, который вы предоставляете. Таким образом, он выполняется.

Вы также можете проверить эти ссылки

Значение маршрута с тире[^]

Проблема маршрутизации MVC - Попытка подобрать остаток после дефиса в маршруте[^]


Рейтинг:
2

Kornfeld Eliyahu Peter

Порядок правил маршрутизации имеет значение...
Поиск правила остановится на первой же подгонке...
В большинстве случаев это означает, что более длинные правила (с тем же открытием) должны предшествовать коротким...
Так что переключайтесь между вашими двумя правилами...