Я могу повторить проблему, имея маршрут о моем маршруте по умолчанию, который все еще соответствует общему шаблону.Пример:
routes.MapRoute(
"Default2", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Home", action = "Index"} // Parameter defaults
);
Когда места выше моего маршрута по умолчанию, я получаю? Id = 1 в моем URL.Можете ли вы подтвердить, что эта ссылка не соответствует ни одному из маршрутов выше ожидаемого маршрута?
РЕДАКТИРОВАТЬ: приведенный ниже не влияет на URL
Однакоеще может быть полезно использовать UrlParameter.Optional в других сценариях.Уход за процветанием, если в правиле толпы не указано иное.
new UrlParameter.Optional value.Если вы установите значение по умолчанию для параметра URL на это специальное значение, MVC обязательно удалит этот ключ из словаря значений маршрута, чтобы он не существовал.
Я думаю, вам нужно настроитьваш маршрут слегка.Измените id = "" на id = UrlParameter.Optional
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
Это то, что мы используем для маршрута по умолчанию, и поведение, которое вы ищете, - это поведение наших приложений.