Папка контроллера MVC3 не появится в URL - PullRequest
7 голосов
/ 02 июля 2011

Это просто пример, который я не могу понять, как заставить его работать.

В моей папке контроллера MVC3, если я добавлю новую папку с именем «Администратор» и добавлю контроллер «Новости» с действием «Индекс», вы получите ошибку сервера при попытке открыть этот URL (404):

http://url/Admin/News

Даже если вы наберете "/ Index" за ним, оно не будет работать. Как вы можете создать иерархию, которая приведет к аналогичным URL? Просто чтобы прояснить, я хочу создать URL как:

http://url/folder1/folder2/controller/action

Спасибо

1 Ответ

16 голосов
/ 02 июля 2011

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

Если вы заглянете в файл global.asax вашего веб-проекта, вы увидите метод с именем RegisterRoutes ().Этот метод объединяет все доступные маршруты для вашего сайта, которые будут использоваться для поиска правильного контроллера / действия / параметра / шаблона для выполнения.

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

Щелкните правой кнопкой мыши по проекту вашего сайта, выберите «Добавить», выберите «Площадь»

enter image description here

Дайте название вашей области, в этом случае "Admin" будет иметь смысл

Ваш обозреватель решений теперь добавит администратора "области".Обратите внимание, что он имитирует структуру и макет стандартного проекта, только в своей собственной папке.

enter image description here

Добавьте контроллер во вновь созданную административную область и назовите его «Новости» Добавитьваши действия

Вот URL результата теста, который делает это:

enter image description here

Это решение для простоты.Если вы хотите продолжить, вам придется углубиться в создание собственных маршрутов в методе RegisterRoutes (), о котором я говорил выше.Маршрутизация - это то, что вы должны хорошо понимать, поэтому я рекомендую это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...