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

Razor/C#-如何在代码块中呈现页面?,razor,rendering,Razor,Rendering,我的根目录中有两个文件,即“test1.cshtml”和“test2.cshtml” 当我尝试在test1.cshtml中呈现test2.cshtml时,成功了,我使用了以下代码: @RenderPage("~/test2.cshtml"); 但是当我尝试在test1.cshtml中使用代码块渲染test2.cshtml时,它没有被渲染 @{ RenderPage("~/test2.cshtml"); } 其他信息: test2.cshtml包含以下内容: <!DO

我的根目录中有两个文件,即“test1.cshtml”和“test2.cshtml”

当我尝试在
test1.cshtml
中呈现
test2.cshtml
时,成功了,我使用了以下代码:

@RenderPage("~/test2.cshtml");   
但是当我尝试在
test1.cshtml
中使用代码块渲染
test2.cshtml
时,它没有被渲染

@{
    RenderPage("~/test2.cshtml");   
}
其他信息:

test2.cshtml
包含以下内容:

<!DOCTYPE html>

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

你好WebMatrix

RenderPage返回一个字符串

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

您使用的第二种语法只是执行代码;(正如您所指出的,它是一个代码块,可以包含多个语句)。这样就放弃了RenderPage语句的结果

尝试:

或:

如果要传递数据,请执行以下操作:

@{
    Response.Write(RenderPage("~/test2.cshtml", new{ Data1 = "Hello", Data2 = "World" }));
}
并利用这些数据,

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

作为响应,这种方法似乎存在一些问题。页面刚加载时似乎会调用Write,导致内容(在页面开头)脱离上下文写入。@Rafid如果您关心的是主页上的数据,请参阅编辑。如果这不是你关心的问题,请向我解释,以便我可以解决它。非常感谢。
@{
    Response.Write(RenderPage("~/test2.cshtml", new{ Data1 = "Hello", Data2 = "World" }));
}
.
.
<body>
    @Page.Data1 @Page.Data2
    @Model.Data1 @Model.Data2
</body>
.
.