2010-12-17 5 views
2

Razor/MVC3でDotNetOpenAuthを使用しようとしています。ほとんどのDotNetOpenAuth HTMLヘルパーは、System.Web.UI.Pageをパラメータの1つとして受け入れています。このパラメータは、WebFormsエンジンを使用して正常に動作しますが、Razorでは使用できません。何とか動的WebPageBase.PageをSystem.Web.UI.Pageにキャストすることは可能ですか?Razor - this.Page(動的WebPageBase.Page)からSystem.Web.UI.Pageへのキャスト方法

ありがとう、Antonin

+0

DotNetOpenAuthのどのHtmlヘルパークラスが 'System.Web.UI.Page'を取りますか?私はあなたに同じことをやり遂げる別の方法を見つけることができるかもしれません。 –

+0

Andrew、私は特にOpenIdSelectorScriptsのようなMVC OpenIdヘルパーについて話しています。奇妙なのは、https://github.com/AArnott/dotnetopenid/blob/v3.4/src/DotNetOpenAuth/Mvc/OpenIdHelper.csの下で、これらのヘルパーの新しいバージョンが表示され、ページ参照は必要ないが、 DotNetOpenAuth.dllの最新のコンパイル済みバージョン(3.5.0.10259について話しています)は、まだこれらのヘルパーの古いバージョンを持っています(9月16日にそのファイルを変更したことがわかります)。変更がまだバージョンをコンパイルすることができなかった理由は何ですか?多くのありがとう、Antonin –

+0

v3.5はまだリリースされていません(これはCTPのみです)。各公式リリースは、以前のバージョンのリリースに対するすべての修正を収集します。しかし、このようなフィードバックを聞くことで、バージョンをリリースしたり、ブランチをマージしてこの問題を解決する際の優先順位付けに役立ちます。 –

答えて

2

これらは全く異なるオブジェクトです。したがって、いいえ、あなたはキャストすることはできませんまたはSystem.Web.UI.Pageに変換します。

ただし、this articleはさらに役立ちます。

+0

リンク切れている:404:ページが見つかりません – serhio

2

System.Web.UI.PageはWebフォームページモデルの一部であり、Razorとはまったく関係ありません。 Razorページは、同じ階層の一部ではないSystem.Web.WebPages.WebPageから継承します。 GvSが言及しているように、「ページ」プロパティはRazorの別のオブジェクトです。 Razorでは、そのプロパティはPageData値にアクセスするためのショートカットを提供する単なるC#の動的オブジェクトです。たとえば、PageData["foo"]Page.fooと同じです。

+1

ありがとう、たくさん。両方の答えが正しい、私は両方のマークを付けることができないので、最初のものを選ぶ:-)当面は、RazorとWebFormsビューエンジンを組み合わせて、WebFormsの部分ビューにページ参照が必要なヘルパーをカプセル化した私は剃刀の視点から呼びかけています。これはうまく動作します。 –

関連する問題