Действие контроллера MVC 3 не работает - PullRequest
3 голосов
/ 10 июня 2011

У меня есть работающее приложение в asp.net MVC3. Сегодня, когда я работал над этим в VS2010, я обнаружил, что ни одно из действий от конкретного контроллера не запускается. При просмотре контроллера / действия я получаю сообщение об отсутствии страницы. Я проверил все страницы присутствуют (контроллер, просмотр). Даже если я добавлю новое действие к этому контроллеру, оно вообще не вызывается. В то же время действия других контроллеров работают нормально. Я могу получить доступ к страницам. Это довольно странно, и я не могу понять это. Любая помощь?

Редактировать:

Действие контроллера, которое не работает: http://localhost:7400/Registration/MedicalHistory/0

Код от global.asax

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        // Home and error page
        routes.MapRoute("error", "error", new { controller = "Home", action = "Error" });

        //Default routing
        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Program", action = "Index", id = UrlParameter.Optional },  // Parameter defaults
            new string[] { "ASPNETMVCApplication.Controllers" }
        );

        //Admin routing
        routes.MapRoute(
             "Admin", // Route name
             "{controller}/{action}/{id}", // URL with parameters
             new { controller = "Program", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
             new string[] { "ASPNETMVCApplication.Areas.Admin.Controllers" }
        );            
    }

Медико-историческое действие:

   [HttpGet]
    public ActionResult MedicalHistory(int id = 0)
    {
      //some code
      return View()
    }

Ответы [ 4 ]

3 голосов
/ 15 июня 2011

Ну, во-первых, вы, кажется, неправильно настроили свою админку. Чтобы добавить область, в корне вашего MVC-проекта должна быть структура папок Areas / {имя вашей области}, например Области / Администратор, который содержит все обычные папки Controllers, Views.

Внутри вы должны создать класс, который наследует AreaRegistration и реализует как минимум свойство AreaName и метод RegisterArea ().

В Global.asax.cs в вашем обработчике Application_Start () первая строка должна быть AreaRegistration.RegisterAllAreas ();.

Также стоит добавить RouteDebug в ваше приложение и добавить переключатель web.config, который вы используете в Application_Start (), чтобы включить или отключить отладку маршрута. Это абсолютно бесценно, если ваши маршруты работают неправильно или не получают ожидаемых параметров действий.

1 голос
/ 25 февраля 2013

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

1 голос
/ 18 июня 2011
  • возможно, имя вашего контроллера / действия не соответствует входящему запросу.
  • Отладка и проверка того, что свойства объекта @Request также могут помочь !!
  • Вы также можете визуализировать каждый ваш запрос и какие маршруты обрабатываются с помощью этого инструмента ниже.

http://mvcroutevisualizer.codeplex.com/

1 голос
/ 10 июня 2011

Я предполагаю, что это проблема маршрутизации. Убедитесь, что ваша маршрутизация не портит формат URL, который вы ожидаете.

Можете ли вы показать нам свой код маршрутизации и структуры URL, которые вы ожидаете работать? Возможно, я смогу дать более подробный ответ с этой информацией.

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