Тип АСП. Индекс страницы 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, которые могут ссылаться он.
нет необходимости принимать напряженность. Просто выполните 2 элементарных действия
- удалить
_ViewStart.cshtml
-
сделать заявление к комментарию. Означает для следующего оператора в индексном представлении:
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.