2010-12-17 46 views
2

我试图在Razor/MVC3中使用DotNetOpenAuth。大多数DotNetOpenAuth HTML助手都接受System.Web.UI.Page作为参数之一,它使用WebForms引擎可以很好地工作,但不适用于Razor。莫名其妙地将动态WebPageBase.Page投射到System.Web.UI.Page中?Razor - 如何从this.Page(动态WebPageBase.Page)强制转换为System.Web.UI.Page

谢谢,安东宁

+0

DotNetOpenAuth中的哪个Html助手类是指'System.Web.UI.Page'?我可能能够找到一种替代方法来完成相同的事情。 – 2010-12-18 01:40:37

+0

安德鲁,我正在谈论有关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 – 2010-12-20 08:38:52

+0

v3.5尚未发布(它只是一个CTP)。每个正式版本都收集了针对以前版本发布的所有修复程序。但是当我们发布版本或合并分支来解决这个问题时,听到这样的反馈有助于确定优先级。 – 2010-12-20 16:24:21

回答

2

他们是完全不同的对象。所以,不,你不能转换或转换成System.Web.UI.Page。

但是this article可能会对您有所帮助。

+0

断开的链接:404:找不到页面 – serhio 2014-03-19 09:45:16

2

System.Web.UI.Page是Web Forms页面模型的一部分,与Razor完全无关。 Razor页面从System.Web.WebPages.WebPage继承,它不属于同一层次结构。正如GvS所提到的,“页面”属性在Razor中是一个不同的对象。在Razor中,该属性只是一个C#动态对象,它提供了访问PageData值的快捷方式。例如:PageData["foo"]Page.foo相同。

+1

非常感谢,伙计们。两个答案都是正确的,我只是不能标记两个,所以选择第一个:-)目前,我只是简单地使用了一个事实,即可以将Razor和WebForms视图引擎组合在一起,并简单地将需要Page引用的帮助器封装到WebForms局部视图中我从剃刀视角打来。这样它工作正常。 – 2010-12-20 08:40:09