Нет! Эти два маршрута не совпадают.
//Route1
route.MapRoute("Route1" , "{controller}/{action}/{id}" , new { id = UrlParameter.Optional});
То же самое можно также сделать, установив для id пустую строку: {id: ""}
например:
//Route 2.
routes.MapRoute("Route2" , "{controller}/{action}/{id}" , new {id = ""})
Это выглядит очень коротко / кратко, так почему бы нам не использовать это?
В чем разница?
Первое:
Вы спрашиваете: эти два маршрута одинаковы?
Нет !эти два маршрута не одинаковы.
Теперь перейдем к точке!
Какая разница между этими двумя маршрутами?
Когда мы набираемЗначения параметров URL разбираются из URL и помещаются в словарь?
Теперь, когда мы используем UrlParameter.Optional в качестве значения по умолчанию, и в URL не указывается никакого значения, маршрутизация даже не добавляет запись в словарь.Если в качестве значения по умолчанию задана пустая строка, словарь значений маршрута будет содержать значение с ключом «id» и значение в виде пустой строки.В некоторых случаях это различие важно, поскольку оно позволяет узнать разницу между id , который не указан, и указанным, но оставленным пустым.