Проблемы с движком Razor View в автономном консольном приложении Nancy - PullRequest
4 голосов
/ 01 ноября 2011

В некоторых случаях я использую слегка измененную версию демо-версии хостинга Nancy Web Framework, Nancy.Demo.Hosting.Self. Я изменил его, добавив в него движок представления Нэнси Razor, Nancy.ViewEngines.Razor. Он отлично работает, когда я использую базовые функции Razor, но у меня возникли проблемы с частичными представлениями и макетами @Render.

Поддерживаются ли эти расширенные функции за пределами ASP.NET?

Те же самые виды, которые я скопировал с Nancy.Demo.Hosting.Aspnet, там вроде бы нормально работают.

У меня сбой из-за того, что я не нашел свой «Заголовок».

Вот вид:

@{ Layout = "razor-layout.cshtml"; }
@section Header {
    <!-- This comment should appear in the header -->
}
<h1>Hello @Model.FirstName</h1>
<p>This is a sample Razor view!</p>
@section Footer {
    <p>This is footer content!</p>
}

И Макет

<html>
<head>
    <title>Razor View Engine Demo - @Model.FirstName</title>
    @RenderSection("Header")
</head>
<body>
    <div id="body">@RenderBody()</div>
    <div id="footer">@RenderSection("Footer")</div>
    <div id="optional">@RenderSection("Optional", false)</div>
</body>
</html>

Ответы [ 2 ]

4 голосов
/ 01 ноября 2011

Вы уверены, что ваш cshtml файл заголовка настроен для копирования в выходной каталог?

0 голосов
/ 06 октября 2016

Работает нормально, вот мой _Layout.cshtml (обратите внимание на @RenderBody):

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Test Owin</title>
    <link href="/Content/bootstrap/bootstrap.css" rel="stylesheet" />
</head>
<body>
   <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; 2016 - My Test Owin Application</p>
        </footer>
    </div>
    <script src="/Scripts/jquery-3.1.1.js"></script>
    <script src="/Scripts/bootstrap.js"></script>
</body>
</html>

и вот мой контент, Index.cshtml:

@{ Layout = "_Layout.cshtml"; }

<div class="jumbotron">
    <h1>Test Owin</h1>
    <p class="lead">Test</p>
    <p>
        Yesterday, Elon Musk got on stage at the 2016 International Astronautical Congress and unveiled the first real details about the big fucking rocket they’re making.
    </p>
</div>
...