Github как маршруты - PullRequest
       32

Github как маршруты

0 голосов
/ 19 марта 2012

Как это достижимо в asp.net mvc?Я видел там несколько примеров ruby ​​...

Github-подобные маршруты в Rails

т.е. вложенные папки могут быть неограниченными ... однако они обычно вкладываются один раз

Например,

Допустим, мой основной маршрут в моем приложении:

/ projects / {projectid} /

Я подключен к файловой системе,поэтому я хочу, чтобы пользователи перемещались по любой структуре каталогов, чтобы у меня было:

/projects/{projectid}/foldera/
/projects/{projectid}/folderb/
/projects/{projectid}/foldera/pic1.png
/projects/{projectid}/folderb/special/car134d.jpeg

и т. д. *

Таким образом, я могу показывать только файлы или изображения, которые находятся в каталоге url /пользователь в ...

1 Ответ

2 голосов
/ 19 марта 2012

Думаю, вам нужен обработчик сегментированных URL {*queryvalues} для маршрутизации.Символ * указывает на совпадение в стиле подстановки одного или нескольких сегментов, разделенных символом "/".

. Чтобы отобразить физический путь, вы можете использовать это, чтобы добавить маршрут к вашему Global.asax.cs:

routes.MapPageRoute(
            "Projects", // Route name
            "projects/{projectId}/{*path}", // Route url format
            "~/ProjectFolder/{projectId}/{path}" // Path to files
            );

Если вы хотите получить путь к действию контроллера MVC, а затем что-то с ним сделать, вы можете использовать MapRoute:

routes.MapRoute(
            "Projects", // Route name
            "projects/{projectId}/{*path}", // Route url format
            new { controller = "Project", action = "Index" } // Defaults
            );

Затем создать ProjectController ив действии Index восстановите RouteData.Values["projectId"] и RouteData.Values["path"] и сделайте с ними все, что вам нужно ...

...