ASP.NET MVC Пользовательская маршрутизация в подпапке - PullRequest
1 голос
/ 01 марта 2011

Я выполнил поиск в Google (возможно, с неправильным ключевым словом) и посетил учебные материалы на сайте ASP.NET/MVC. Но не правильно понял маршрутизацию MVC. У меня есть сценарий следующего рисунка. Я хочу отобразить Index.cshtml при запуске веб-сайта.

enter image description here

Я изменил метод RegisterRoutes файла Global.asax.cs различными способами. Последний код (не работает) ниже

routes.MapRoute(
            "App", // Route name
            "App/{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

Я буду очень рад, если кто-то объяснит метод MapRoute другим примером и ответит на мою проблему.

Ответы [ 2 ]

2 голосов
/ 01 марта 2011

Не думаю, что проблема связана с вашими маршрутами, я полагаю, что это вызвано перемещением папок View и Controller в папку App.

MVC использует «соглашение о конфигурации» для таких вещей, как расположение папок. Я полагаю, он не может найти виды / контроллеры в новых папках?

С здесь :

Эти папки включены даже в Пустое приложение ASP.NET MVC, потому что фреймворк ASP.NET MVC по умолчанию использует «соглашение о конфигурации» подход и делает по умолчанию предположения, основанные на именовании папок конвенций. Например, контроллеры ищите представления в папке Views по умолчанию без необходимости явно укажите это в своем коде. Придерживаясь соглашений по умолчанию уменьшает количество кода, которое вам нужно написать, а также может сделать это проще для другие разработчики, чтобы понять ваш проект.

Я не говорю, что невозможно иметь структуру папок, как у вас, я просто не верю, что она поддерживается из коробки. Лично я бы рекомендовал вернуться к настройкам по умолчанию, если вам нужно сохранить эту структуру, то я думаю, что вам может понадобиться реализовать ваши собственные ControllerFactory и ViewEngine (я не уверен, что это правильные хуки, которые вам нужно изменить) .

Edit: Вы пытаетесь реализовать приложение как область?

Edit2: Если вы пытаетесь добавить приложение в качестве области, вам необходимо выполнить несколько шагов. Причина, по которой я не был уверен, пытался ли вы это сделать, заключается в том, что я думал, что области должны существовать в папке областей. Есть несколько шагов, описывающих здесь Включая, как зарегистрировать свой район, если вы пытаетесь это сделать.

1 голос
/ 02 марта 2011

ASP.NET MVC 3 имеет встроенную функцию для подпапок.Это называется Области (спасибо @Morten за предоставленное мне слово).
Но после завершения MSDN Walkthrough для Области я все еще не смогзапустить веб-приложение.Ошибка показывала Ошибки конфигурации .@ Дэнни тоже это заметил.
Затем я искал и обнаружил, что файлы Web.config в подпапках не должны содержать специфичные для приложения свойства .
Итак, я удалил эти свойства из файлов Web.config.Тогда я смог бежать.Но были некоторые ошибки во время выполнения, когда я хотел перейти к моим представлениям подпапки / области.Ошибка была "Не удалось загрузить тип 'System.Web.Mvc.ViewPage <.. <>'" при нажатии на ссылки для просмотра папки «Области».
Затем я снова искал и нашел полезный этот пост.И тогда мое приложение успешно запускается, и я могу перемещаться по всем страницам.

...