Страница MVC не отображается, 404 не найдена - PullRequest
1 голос
/ 01 апреля 2010

У меня очень простой MVC-сайт, который возвращает ошибку 404, не найденную при попытке загрузить страницу в самом начале. Я ищу какое-то направление для устранения этой проблемы, поскольку из сообщения об ошибке действительно ничего не происходит.

ОБНОВЛЕНИЕ: Кажется, проблема была вызвана тем, что я установил начальную страницу, щелкнув правой кнопкой мыши по файлу и сказав, что он установлен как стартовая страница. Это привело к тому, что Visual Studio попытался загрузить эту страницу напрямую. При изменении URL-адреса для доступа к странице с использованием правил маршрутизации страница будет загружаться правильно, как рекомендует Keltex ниже.

Я получаю ошибку:

Описание: HTTP 404. Ресурс, который вы ищете (или один из его зависимости) можно было удалить, изменить его имя или временно недоступен. Пожалуйста, просмотрите следующий URL и убедитесь, что он записан правильно.

Запрошенный URL: /Views/Other/Index.aspx

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

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

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

у меня есть:

Контроллеры

  • OtherController

Просмотров: 1028 * *

  • Общая папка:
    • Site.Master
  • Другая папка:
    • Other.Master
    • index.aspx

Site.Master код:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>
            <asp:ContentPlaceHolder ID="TitleContent" runat="server" />
        </title>
    </head>
    <body>
        <div>
            <asp:ContentPlaceHolder ID="MainContent" runat="server">
            </asp:ContentPlaceHolder>
        </div>
    </body>
</html>

Другое. Код мастера:

<%@ Master Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewMasterPage" %>

<asp:Content ID="OtherTitle" ContentPlaceHolderID="TitleContent" runat="server">
    OTHER PAGE - MASTER TITLE
    <asp:ContentPlaceHolder ID="OtherPageTitle" runat="server">
    </asp:ContentPlaceHolder>
</asp:Content>

<asp:Content ID="OtherContent" ContentPlaceHolderID="MainContent" runat="server">       
    Some other content.
    <asp:ContentPlaceHolder ID="PageContent" runat="server">    
    </asp:ContentPlaceHolder>
</asp:Content>

Index.aspx Код:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Other/Other.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="IndexTitle" ContentPlaceHolderID="OtherTitle" runat="server">
    Home
</asp:Content>

<asp:Content ID="IndexContent" ContentPlaceHolderID="OtherContent" runat="server">
    Index content
</asp:Content>

Другой код контроллера

namespace MVCProject.Controllers
{
    public class OtherController : Controller
    {
        //
        // GET: /Member/

        public ActionResult Index()
        {
            // Have also tried:
            // return View("Index", "Other.Master");

            return View();
        }
    }
}

Ответы [ 3 ]

2 голосов
/ 01 апреля 2010

Я думаю, что URL должен быть:

/Other

не

/Views/Other/Index.aspx

URL обычно не имеют префикса /Views. Это просто папка, в которой расположены представления. Также тип View Index обычно не указывается, поскольку это действие по умолчанию. Наконец, расширение .aspx обычно не указывается в MVC. Если вы хотите, чтобы эта страница стала страницей по умолчанию для сайта, вам нужно изменить правила маршрутизации, чтобы они выглядели так:

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

(обратите внимание на изменение контроллера по умолчанию с Home на Other)

2 голосов
/ 01 апреля 2010

Есть ли какой-либо специальный URL или маршрут, указанный в диалоге свойств проекта?

Это должен быть маршрут или URL , а не страница ASPX.

alt text

1 голос
/ 01 апреля 2010

Кажется, что сообщение 404 указывает на то, что вы пытаетесь получить доступ к представлению прямо в веб-браузере. Это правильно? Разве вы не должны получить доступ к URL / Другое / Индекс?

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