Тип АСП. Индекс страницы cshtml "не наследуется от" System.Сеть.страницы.Страница'

Я:

введите ' ASP._Page_index_cshtml 'не наследуется от' System.Сеть.страницы.Страница'.

когда я просматриваю свой индекс.cshtml файл. Это очень просто:

@using System.Web.Optimization
@inherits System.Web.Mvc.WebViewPage
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width">
    <title>Hello World</title>
    @Styles.Render("~/Content/css", "~/Content/themes/base/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    @Scripts.Render(
        "~/bundles/jquery",
        "~/bundles/jqueryui"
    )
</body>
</html>

мой индекс.файл cshtml находится вне папки Views, если это вообще имеет значение.

8 ответов


Мне просто нужно было удалить:@inherits System.Web.Mvc.WebViewPage

похоже, у меня была ошибка вставки копии при реорганизации моего проекта.


Не удаляйте наследование, это может быть необходимо и может привести к другим проблемам в будущем.

вместо этого попробуйте следующее:

включить "просмотр всех файлов" в веб-проекте, который не работает, и поиск файла, который кажется правильным, но не включен в visual studio, и удалить его. Если это не удается в папке развертывания, попробуйте также очистить папку и повторно развернуть сайт, у вас могут быть ненужные файлы, которые могут вызвать то же самое проблема.

в моем случае в корне webproject у меня была дополнительная копия _ViewStart.cshtml (исключен из проекта), я удалил этот файл, и это сделало трюк.

надеюсь, это поможет, дайте мне знать,если это решит вашу проблему.


это может быть более старая версия системы.Сеть.страницы.dll загружается в память и пытается привести вашу страницу cshtml к версии класса веб-страниц из этой dll.

чтобы проверить это, попробуйте посмотреть, какие http-модули в настоящее время зарегистрированы:

var allModules = HttpContext.Current.ApplicationInstance.Modules;
for( int i = 0; i < allModules.Count; i++ ) {
    Trace(allModules.GetKey(i));
}

в моем случае это было:

....
__DynamicModule_System.Web.WebPages.WebPageHttpModule, System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35_bca8e05a-5746-45b0-be95-2b920b455ccf

__DynamicModule_System.Web.WebPages.WebPageHttpModule, System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35_c1a67b42-31a9-47f1-8483-9e712fabe2a7

чтобы устранить проблему, вам необходимо заменить старую версию системы.Сеть.страницы.dll в папках /Bin или некоторых других dll-s, которые могут ссылаться он.


просто удалите _ViewStart.cshtml и повторное добавление.


нет необходимости принимать напряженность. Просто выполните 2 элементарных действия

  1. удалить _ViewStart.cshtml
  2. сделать заявление к комментарию. Означает для следующего оператора в индексном представлении:

    Layout = "~/Views/_ViewStart.cshtml";
    

    и отметьте это как комментарий:

    //Layout = "~/Views/_ViewStart.cshtml";
    

Я меняю строку cshtml с:

Layout = "~/Views/_ViewStart.cshtml";

to

Layout = "~/Views/Shared/_Layout.cshtml";

С _ViewStart.cshtml содержит только эту строку кода. Файл макета был необходим, поскольку он содержит скрипт для проверки на стороне клиента.

он работал также, когда я удаляю линию, но я предпочитаю держать _Layout.cshtml включено.


Почему вы пытаетесь перейти непосредственно к просмотру? И почему это не в папке views?

чтобы получить базовую страницу "Hello World", вы сначала хотите создать контроллер под названием HomeController.cs:

using System.Web.Mvc;

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

создайте файл /Views/Home/Index.cshtml и поставить разметку в этом. Вам также может потребоваться добавить:

@{
    Layout = null;
 }

в верхней части страницы, так как не похоже, что вы используете главную страницу.

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


удалить веб.. config из папки.

Как вы включаете Partial1.cshtml из этой папки, он также включает в себя интернет.config изнутри. И паутину.config говорит, что все страницы должны наследовать от WebViewPage.