Razor / C # - Как отобразить страницу в блоке кода? - PullRequest
1 голос
/ 28 декабря 2011

У меня есть два файла в моем корневом каталоге, а именно «test1.cshtml» и «test2.cshtml».

Когда я пытаюсь отобразить test2.cshtml в test1.cshtml, все прошло успешно, я использовал этот код:

@RenderPage("~/test2.cshtml");   

Но когда я пытаюсь отобразить test2.cshtml в test1.cshtml, используя блок кода, он не отображается.

@{
    RenderPage("~/test2.cshtml");   
}

Дополнительная информация:

test2.cshtml содержит это:

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        Hello WebMatrix
    </body>
</html>

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

RenderPage возвращает строку

Синтаксис @code, который вы использовали первым, предназначен для запуска оператора и записи вывода в выходной поток

Второй используемый вами синтаксис просто выполняет код;(это блок кода, как вы указали, и он может содержать несколько операторов).Таким образом вы отбрасываете результат оператора RenderPage!

try:

@{
    var pageHtml = RenderPage("~/test2.cshtml");
}

@pageHtml
0 голосов
/ 29 декабря 2011

Или:

@{
    Response.Write(RenderPage("~/test2.cshtml"));
}

Если вы хотите передать данные:

@{
    Response.Write(RenderPage("~/test2.cshtml", new{ Data1 = "Hello", Data2 = "World" }));
}

и использовать данные,

.
.
<body>
    @Page.Data1 @Page.Data2
    @Model.Data1 @Model.Data2
</body>
.
.
...