Добавление новых страниц в проект MVC 3 приводит к ошибке «Ресурс не найден» - PullRequest
1 голос
/ 01 сентября 2011

У меня есть проект MVC 3, над которым я работаю некоторое время.Сегодня я решил добавить новую страницу.Я добавил новый вид, подключил его с действием на существующем контроллере, но без кубиков.Я получаю 404. Я подумал, что может быть что-то не так с представлением, поэтому я сделал response.write в контроллере (чтобы вывести представление из уравнения).Нет кости.Я попытался создать новый контроллер.То же самое.Я попытался переместить существующую страницу.То же самое.Все существующие страницы работают, но я не могу добавить новые или переместить существующие.Моя клавиатура покрыта волосами.Пожалуйста, помогите.

Мой global.asax:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

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

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

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

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

Я пытаюсь добавить представление /Views/Restaurants/Nearby.

Контроллер / Контроллеры/ RestaurantsController и ActionResult:

public ActionResult Nearby()
    {
        return View();
    }

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

Начните с удаления следующей бесполезной строки из ваших определений маршрута:

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

, чтобы у вас были только настройки маршрута по умолчанию:

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

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

Теперь, чтобы получить доступ к вашему новому действию контроллера, вы должны перейти к /Restaurants/Nearby. Это отобразит действие Nearby на контроллере Restaurants:

public class RestaurantsController: Controller
{
    public ActionResult Nearby()
    {
        return View();
    }
}

, который, очевидно, будет выполнять представление ~/Views/Restaurants/Nearby.cshtml.

1 голос
/ 17 октября 2012

Я знаю, что это старая ветка, но я нашел много решений 'Resource Not Found', которые мне не помогли. Через некоторое время я решил свою проблему. Надеюсь, это поможет кому-то еще.

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

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

Я потратил на это всего три часа, поэтому я счастлив.

0 голосов
/ 21 сентября 2011

Вы можете попробовать добавить пакет NuGet Route Debugger IIRC,

Get-Package routedebugger

При необходимости измените запись web.config, чтобы активировать отладчик маршрута для всех запросов:

<add key="RouteDebugger:Enabled" value="true" />

Затем вы должны собрать и запустить свой проект и перейти к /Restaurants/Nearby/. Полученная диагностика должна сказать вам, где находится ваша проблема маршрутизации (если есть). Если у вас все еще есть проблемы, отредактируйте ваше сообщение с информацией об отладке маршрута, и мы посмотрим, что мы можем сделать!

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