2011-12-28 19 views
1

私はルートディレクトリに "test1.cshtml"と "test2.cshtml"の2つのファイルを持っています。Razor/C# - コードブロックにページをレンダリングするには?

私はtest1.cshtmltest2.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さ

出力ストリームへ

2番目の構文はコードを実行するだけです。 (そのコードブロックはあなたが指摘したように、複数のステートメントを含むことができます)。あなたは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

+0

@Rafidメインページのデータに関する懸念がある場合は、編集を参照してください。これがあなたの懸念事項ではない場合は、私に説明してください。ありがとうございました! – dpp

関連する問題