Вот мой маршрут, единственные необходимые пары являются контроллеромASP.net MVC 4 маршрутизации и дополнительные параметры неожиданного результат
routes.MapRoute(
"countryoptional/controller",
"{country}/{controller}/{pagelabel}/{page}",
new { action = "index", country = UrlParameter.Optional, pagelabel = UrlParameter.Optional, page = UrlParameter.Optional },
new
{
pays = @"$|^(france|belgium)$",
controller = @"^(car|boat)$",
pagelabel = @"^$|page",
page = @"^$|\d{1,6}"
}
);
Я ожидаю, что следующие URLS работать:
/автомобиль/
/автомобиль/страница/2
/Франция/автомобиль
/Франция/Автомобиль/страница/2
Это вид работ:
Url.Action("index", "car", new { country= "france", pagelabel = "page", page = 2})
будет производить: /Франция/автомобиль/страница/2
НО
Если Я хочу url без страны, действие вида отвечает, но конструктор, подобный
Url.Action("index", "car", new { pagelabel = "page", page = 2})
будет производит эту ссылку: // машина/страница/2
Я получаю это двойной слэш «// автомобиль» поэтому он разрывает связь, конечно.
Я подозреваю, что ему не нравится возможность параметра {country}, предшествующего контроллеру, необязательно в определении {country}/{controller}/... Я не хочу усложнять конфигурацию маршрута и с другой декларацией маршрута Должен быть способ, что я делаю неправильно?
В ваших необязательных параметрах вы платите вместо страны. Я не уверен, что это имеет значение. –
Я не слишком хорош с регулярным выражением, но я считаю, что вы добавляете ограничение, говорящее, чтобы убедиться, что в стране есть либо Франция, либо бельгия. Поэтому, когда вы не предоставляете его, он не устанавливает значение страны. –