Razor / C# - 如何在代码块中呈现页面?

时间:2011-12-28 03:22:07

标签: razor rendering

我的根目录中有两个文件,即“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 个答案:

答案 0 :(得分:2)

RenderPage返回一个字符串

首先使用的@code语法设计为运行语句并将输出写入输出流

您使用的第二种语法只执行代码; (它是你指出的代码块,它可以包含多个语句)。你这样丢弃RenderPage语句的结果!

尝试:

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

@pageHtml

答案 1 :(得分:0)

或者:

@{
    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>
.
.