Преобразованный веб-сайт ASP.NET MVC 3 не отвлекает внимание от новых обзоров Razor - PullRequest
1 голос
/ 24 января 2011

У меня обновлена ​​система ASP.NET 2010 MVC2 до MVC3. Я также обновил текущий веб-сайт MVC2 до MVC3, используя инструмент конвертации. Я оставил текущие страницы как .aspx, включая главную страницу. Я добавил новый вид .cshtml. Все страницы работают, кроме нового вида на основе бритвы.

Я получаю следующую ошибку

Файл "~ / Views / Shared / Site.Master" не может быть отображен, поскольку он не существует или не является допустимой страницей.

Он существует, потому что он отображает страницы ASPX в порядке. Как добавить правильный оператор для отображения страницы .cshtml в

<asp:ContentPlaceHolder ID="mainContent" runat="server">

Я пытался

@RenderBody()

Это дает вышеуказанное сообщение об ошибке. Я также попробовал

<%: RenderBody() %>

Но это дает ошибку

Имя "RenderBody" не существует в текущем контексте

Трассировка стека выглядит следующим образом:

   [HttpException (0x80004005): The file "~/Views/Shared/Site.Master" could not be rendered, because it does not exist or is not a valid page.]
   System.Web.WebPages.Util.EnsureValidPageType(WebPageBase page, String virtualPath) +98735
   System.Web.WebPages.WebPageBase.PopContext() +166
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +95
   System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220
   System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115
   System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
   System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +23
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +260
   System.Web.Mvc.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() +19
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +177
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
   System.Web.Mvc.Controller.ExecuteCore() +116
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8841105
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

Ответы [ 2 ]

3 голосов
/ 24 января 2011

Я не думаю, что вы можете смешивать и сопоставлять страницы Razor и главные страницы ASP.NET WebForms.

См .: Возможно ли отображение Razor на странице ASPX .Master?

edit : Ну, не автоматически.http://eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx

0 голосов
/ 28 ноября 2011

Есть два файла, которые используются для загрузки Razor-эквивалента главной страницы в проекте приложения ASP.NET MVC 3, они

_ViewStart.cshtml в корне вашего проекта и файл _Layout.cshtml в папке Views / Shared. _Layout.cshtml - ваша главная страница. Код

@RenderBody()

Аналогичен тегам заполнителя содержимого на главной странице веб-форм. Вам необходимо преобразовать главную страницу в синтаксис бритвы и поместить исходный код в _Layout.cshtml. Если вы хотите загрузить другое представление макета, добавьте следующий код в представление содержимого.

@{
   ViewBag.Title = "Content Page";
   Layout = "~/Views/Shared/_MyLayout.cshtml";
}

Надеюсь, это поможет.

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