web-dev-qa-db-ja.com

ASP.NET Webforms(* .aspxページ)でRazor構文を使用できますか?

マイクロソフトがWebMatrix製品のインラインコーディング用に開発したRazor構文が気に入っています( http://en.wikipedia.org/wiki/Microsoft_WebMatrix )。

Visual Studio SP1がRTMされたので、ASP.NET WebformsでRazor構文の使用を有効にすることは可能ですか(および/または計画されていますか)?

40
cpuguru

私たち(ASP.NETチーム)は現在、Razor構文を使用したWebFormsページモデルをサポートする予定はありません。さらに、モデルがあまりにも異なるため、2つを一緒に機能させることができないため、これを真剣に検討することはほとんどありません。

46
marcind

MVCなしでRazorページを使用できます。これはASP.Net WebPagesと呼ばれます。

.CSHTMLファイルを通常のASP.Net 4.0プロジェクトに追加するだけです。

この仕組みの説明 私のブログで。

30
SLaks

Codeplex から入手できるRazorEngineを使用して統合することもできます。 MVCの外でカミソリを処理できます。 RazorのMVCバージョンから得られるすべての機能(@Htmlおよび@Url その他。

5
Buildstarted

これは本当に難しいことではありません。今すぐ取り組んでいます。 CodePlexからRazorEngineを入手します。 Razor cshtml/vbhtmlファイルを実行時にクラスにコンパイルできます。

その後、そのクラスを取得し、Renderメソッド内でASP.Netサーバーコントロールから使用できます。これは、サーバーコントロールの本体からHTMLを取得するのに最適な方法です。はるかにきれいです。

これで、Razorから呼び出すことができるメソッドを追加することもできます。たとえば、RenderChildのようなものを追加します。さらに、サーバーコントロール自体を、Razorで使用可能なモデルとして設定できます。その後、サーバーコントロールを呼び出すことができます。子コントロールの1つを取得してRenderを呼び出すなどの操作を含む。

0
wasabi

マイクロソフトはそれを検討したと思いますが、この件に関する公式の言葉はありません。 ASPXファイルにC#またはVBコードが含まれているはずがないため、WebフォームにRazorサポートを追加する点について疑問に思う必要があります。背後のコードは(部分)です。クラスファイル。WebページまたはMVCのクラスファイルに配置するよりも、Razorを配置する必要はありません。また、サーバーコントロールとHtmlヘルパーのすべての宣言的なものを交換すると、Webに移行する主な理由の1つが削除されますフォームルート、IMO。

0
Mike Brind