2011-12-28 29 views
1

我的根目录中有两个文件,分别是“test1.cshtml”和“test2.cshtml”。Razor/C# - 如何渲染代码块中的页面?

当我尝试呈现test2.cshtmltest1.cshtml,它是成功的,我用这个代码:

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

但是当我尝试使用一个代码块来呈现test1.cshtmltest2.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

RenderPage返回一个字符串

你使用首先@code语法desigened运行语句,并写输出到输出流

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

尝试:

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

@pageHtml 
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> 
. 
. 
+0

似乎有一些关于这种方法的问题,因为Response.Write似乎在页面刚刚加载时被调用,导致内容被写出(在页面的开始处)。 – Rafid 2012-09-12 11:27:28

+0

@Rafid如果您关心的是主页上的数据,请参阅编辑。如果这不是你的担心,请给我解释一下,这样我就可以解决它。谢谢! – dpp 2012-09-13 02:40:03