2016-10-13 4 views
0

私は単純な剃刀ファイル_modelTemplate.cshtmlとpocoクラスモデルを持っています。 モデルを_modelTemplate.cshtmlに渡してHTML文字列をレンダリングできるようにしたい剃刀ファイルとpocoクラスの文字列としてのHTMLのレンダリング

理由:私は従来のWebFormsアプリケーションで作業しています。実際には、テンプレートエンジンとしてrazorを使用して生成しますWebFormsサーバーコントロールやポストバックを必要としない特定のセクションのHTMLをクリーンアップします。

RazorファイルにはMVCヘルパーは必要ありません。単純なテンプレートとバインディングのモデルです。私はひげを使ってHTMLを生成し、そのレンダリングした文字列をWebFormの.aspxページのリテラルの.Textプロパティにバインドすることができたと考えました。

私のような何かを考えている:

Lit1.Text = RenderRazorTemplateAsString(razorFilePath, model); 

これを行う方法はありますが、または私は何かを構築しなければならないでしょうか?

+0

controller.ViewData.Model = model; string result = string.Empty; (StringWriter writer = new StringWriter()) を使用しています。 ViewContext =新しいViewContext(controller.ControllerContext、viewResult.View、controller.ViewData、controller.TempData、writer); viewResult.View.Render(viewContext、writer); result = writer.ToString(); } – Nathan

+0

か、単にHtml.Raw()を使用しますか? – Nathan

+0

ありがとうございますが、私はあなたが何を得ているのか分かりません。これはMVCプロジェクトではなくWebFormsです。私はちょうどpocoモデルとテンプレートからhtmlをレンダリングする必要があります。私はMVCのないエンジンとしてRazorを使いたいだけです。だから、私は、System.Web.RazorとSystem.Web.WebPagesの参照を必要に応じて追加するだけだと思っています。 –

答えて

0

次のプロジェクトを作成してこれを解決しました。

私はWebFormsRazorと呼ばれるgithubに投稿しました。それは私が探していたことを行い、Microsoftの参照のみを使用し、1行のコードでHTMLをレンダリングすることができます。

Lit1.Text = RazorTemplate.Render(myModel, "template.cshtml"); 

1つの欠点は、あなたのかみそりのテンプレートがWebPageBaseから派生RazorWebPageと呼ばれるプロジェクト内のクラスから継承しなければなりません、があります。

@inherits WebFormsRazor.RazorWebPage<myModel> 

はたぶんその制限は、より良いコードを克服するが、結合かみそりのためにそれを使用するためにページにPOCOクラスモデルをアタッチする方法を必要とすることができます。

おそらくこれを行うもっと良い方法がありますが、これは私が今解決している方法です、それは私が探していたことをします。

関連する問題