T4MVC MapRoute не работает?

Я пытаюсь настроить маршрут индексной страницы. Это работает следующим образом:

routes.MapRoute("", "", new {controller = "Home", action = "Index"})

но если я заменю его на T4MVC:

routes.MapRoute("", "", MVC.Home.Index());

почему-то не работает (выдает ошибку "Ресурс не найден"). Кажется, я делал это миллионы раз, и это сработало. Так что я делаю неправильно?

Обновить.

Я использовал Route Debugger и обнаружил, что разница между маршрутом ASP.NET MVC и маршрутом T4MVC заключается в том, что T4MVC добавляет Area="" , а ASP.NET MVC - нет (он сохраняет только контроллер и действие).


person SiberianGuy    schedule 13.07.2014    source источник


Ответы (3)


Обновление (15.07.2014): в качестве обходного пути, я думаю, вам нужно добавить фиктивную область в свой проект, например.

  • Щелкните правой кнопкой мыши «Проект» и выберите «Добавить/Область». Назовите его «Манекен» (или как-то так)
  • Вы можете удалить там все, кроме файла DummyAreaRegistration.cs.

Оригинальный ответ:

Если вы «перейдете к определению» в своем вызове MapRoute, можете ли вы проверить, действительно ли он переходит к перегрузке T4MVC? Обратите внимание: если вы находитесь в области, вместо этого вам нужно позвонить MapRouteArea.

person David Ebbo    schedule 14.07.2014
comment
Он идет в T4Extensions.cs, и я не использую области - person SiberianGuy; 14.07.2014

Обратите внимание, что MVC.Home.Index() возвращает ActionResult.

если вы хотите получить имя действия и контроллера, вам нужно написать:

MVC.Home.Index().GetT4MVCResult().Controller - имя контроллера MVC.Home.Index().GetT4MVCResult().Action - имя действия

Отредактировано:

routes.MapRoute("", "", new {controller = MVC.Home.Index().GetT4MVCResult().Controller, action = MVC.Home.Index().GetT4MVCResult().Action})
person Sergey Boiko    schedule 13.07.2014
comment
Почему это не так хорошо. Что, если я переименую контроллер или действие? - person SiberianGuy; 14.07.2014
comment
Я не смог найти пример, где у нас были проблемы с областями, но где угодно вы можете попробовать это. (Вероятно, это было в mvc 3 или около того, а в mvc 4 и 5 это уже исправлено) - person Sergey Boiko; 14.07.2014

Проблема была вызвана некоторыми проблемами с привязками сборок. Я просмотрел предупреждения в VS, дважды нажал на предупреждение о сборках, и они были исправлены. Этот вопрос мне очень помог: T4MVC ArgumentOutOfRangeException in View

person SiberianGuy    schedule 16.07.2014