Как я могу использовать второе значение Routedata, если есть - PullRequest
0 голосов
/ 26 сентября 2019

Я использую asp.net маршрутизацию с одной переменной без проблем, но я хочу использовать две переменные, а вторая переменная не обязательна.Это может быть или не быть.

Хотите использовать маршруты:

products/{a}/{id}
services/{b}/{id}

В этом случае я должен ввести переменную "a" и переменную "id", чтобы достичь URL.Но я хочу открыть URL-адрес, если переменная {id} отсутствует, например:

products/{a}
services/{b}

Если я удаляю {id} из URL-адреса в маршрутизации, указанный выше URL-адрес работает правильно.

IЯ попытался добавить {* id} и открыл, но у вас возник конфликт при открытии страниц.Есть решение, которое я нашел с {id?}, Но вызывает ошибку маршрутизации.Любое предложение?

МОЕ РЕШЕНИЕ:

Я добавил новый маршрут для решения этой проблемы.Это не самое лучшее, но работает.Если у вас есть лучшее решение с тем же маршрутом, пожалуйста, поделитесь с нами.

routes.MapPageRoute("Products", "products/{a}", "~/products.aspx");
routes.MapPageRoute("Services", "services/{b}", "~/services.aspx");
routes.MapPageRoute("Productsid", "products/{a}/{id}", "~/products.aspx");
routes.MapPageRoute("Servicesid", "services/{b}/{id}", "~/services.aspx");

1 Ответ

0 голосов
/ 26 сентября 2019

Может быть, вы можете сделать ваш параметр {id} необязательным, добавив правило:

    routes.MapPageRoute(
       routeName: "Products",
       routeUrl: "products/{a}/{id}",
       physicalFile: "~/products.aspx",
       checkPhysicalUrlAccess: true,
       defaults: new RouteValueDictionary(new {
       id = UrlParameter.Optional,
    });

Вот больше , которое может помочь вам лучше понять вашу идею.

...