Страница MVC не загружается - ресурс не найден

Я только что создал пустой проект MVC и добавил мастер-страницу и 1 представление (индекс). Я также создал контроллер (HomeController). Я также щелкнул правой кнопкой мыши представление Index.aspx и установил его как запуск.

Однако при запуске проекта появляется ошибка - «Ошибка сервера в приложении '/'. Ресурс не найден. Запрошенный URL-адрес: /Views/Index.aspx"

HomeКонтроллер

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

Показатель

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server">
    Test
</asp:Content>

Мастер-страница

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link href="../../Content/Site.css" rel="stylesheet" />
<title>Test</title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
  <body>
    <form id="form1" runat="server">
       <div class="page">
       <div id="header">
        </div>
   <div id="main">
        <asp:ContentPlaceHolder ID="MainContent" runat="server" />

        <div id="footer">
        </div>
    </div>
        </div>
</form>
</body>
</html>

Глобальный

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
        );

    }

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

        RegisterRoutes(RouteTable.Routes);
    }

person user3430861    schedule 29.12.2015    source источник
comment
Ваше представление похоже на asp.net, но не на страницу mvc. Также вам нужно добавить свое представление в /Views/Home/Index.aspx.   -  person Vadim Martynov    schedule 29.12.2015


Ответы (1)


Попробуйте перейти к /Home/Index

http://localhost:PORT/Home/Index

Вы добавили свой контроллер HomeController, он будет соответствовать маршрутизации MVC по умолчанию и искать метод действия Index в домашнем контроллере. Также убедитесь, что Home View находится в папке Home в разделе Views приложения.

В качестве предложения вы также можете использовать Razor View Engine, а не ASP View Engine.

person Darren    schedule 29.12.2015
comment
Я никогда не использовал Razor и на данном этапе предпочитаю использовать ASP. Как я могу искать индекс с контроллера, извините, я очень новичок в этом. - person user3430861; 29.12.2015
comment
@user3430861 user3430861 - Index — это метод действия в контроллере. Вы указали это в своем вопросе под HomeController. По умолчанию MVC имеет маршрут по умолчанию, который соответствует методу действия HomeController и Index. Попробуйте перейти к «/ Home / Index», как я показал вам в своем ответе. - person Darren; 29.12.2015
comment
Я попытался переименовать URL-адрес на тот, который вы предоставили, но все равно с ошибкой. Должен ли я попытаться создать папку Home и переместить вид в папку? - person user3430861; 29.12.2015
comment
@user3430861 user3430861 - да, это должно помочь, по умолчанию MVC просматривает папки View из имени контроллера. - person Darren; 29.12.2015
comment
Я создал папку с именем Home и переместил представление в папку, но по-прежнему получаю сообщение об ошибке :( Запрошенный URL-адрес: /Views/Home/Index.aspx - person user3430861; 29.12.2015
comment
однако, когда я отредактировал ссылку на это --› localhost:55389/Home/Index, она работает! как я могу избежать получения ошибки! - person user3430861; 29.12.2015
comment
@ user3430861 - это соглашение MVC. Вы хотите убедиться, что все маршруты настроены правильно в файле RouteConfig.cs (в папке App_Start). Я бы также реализовал пользовательскую страницу ошибок, чтобы ваши пользователи не видели 404, если они вводят неверный маршрут. - person Darren; 29.12.2015
comment
Давайте продолжим обсуждение в чате. - person user3430861; 29.12.2015
comment
и не могли бы вы сказать мне, как и откуда я могу получить к этому доступ и что редактировать, пожалуйста - person user3430861; 29.12.2015
comment
Папка Views явно недоступна для прямого доступа из Интернета. Это специально. В MVC вы не обслуживаете файлы просмотра напрямую. Вместо этого вы нажимаете маршрут, который указывает на конкретный контроллер и действие, а затем это действие отображает представление и возвращает его пользователю. Прямо сейчас вы просто пытаетесь заставить его работать как веб-формы, которые полностью отличаются. - person Chris Pratt; 29.12.2015
comment
Да, @ChrisPratt, я знаю, что это неправильно, но как я могу это исправить, пожалуйста? - person user3430861; 29.12.2015
comment
Когда начать? Для исправления требуется ряд различных изменений, все из которых требуют базовых знаний о том, как работает MVC. Перейдите на страницу asp.net/mvc и следуйте инструкциям. - person Chris Pratt; 29.12.2015