2013-07-28 3 views
2

В чем разница между результатамиasp.net MVC MapRoute небольшая разница

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

и

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{*id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

Что делает "*" делать, другие, чем без него.

+0

во втором вы получили {* id} –

ответ

4

Маркировка id со звездочкой будет обозначать ее как параметр «catch-all», например.

/Content/List/1 --> id = "1" 

/Content/List/My/Content --> id = "My/Content" 

Однако, следующим путем: "{controller}/{action}/{id}" второй URL не будет соответствовать вообще.

Более подробная информация о уловах-всех параметрах на MSDN:

Для обработки дополнительных сегментов таким образом, вы отмечаете последний параметр со звездочкой (*). Это называется фиксированным параметром . Маршрут с параметром catch-all также будет соответствовать URL-адресам , которые не содержат значений для последнего параметра. Следующий пример показывает шаблон маршрута, который соответствует неизвестному числу сегментов . query/{queryname}/{* queryvalues}

+0

Хмм хорошая точка. Благодарю. – serefbilge

0

here - аналогичный вопрос. второй из них просто заставляет его кэшировать с отображением Catchall.