2011-05-10 55 views
0

我正在开发的项目是一个最初是WebForms的项目,后来被迁移到Asp.Net MVC。 3页仍在使用Webforms,不值得重写它们。如何检测我的母版页是否通过我的MVC项目中的Webforms或MVC页面调用?

为防止维护两个看起来完全相同的独立母版页,我有两个母版页MVC.MasterWebforms.MasterWebforms.Master已将MVC.Master设置为其主页面,因此无论我何时向菜单中添加新工具链接,都会显示无论用户是在查看Webforms还是MVC页面。 Webforms.Master只有一个ajaxToolkit脚本管理器。

一切工作都很好,直到现在,我正在添加Telerik支持。问题是,你不能在Web窗体页中使用HTML辅助,因为你得到的异常A ViewMasterPage can be used only with content pages that derive from ViewPage or ViewPage<TModel>.

因为我不在乎,如果Telerik的脚本和样式表注册服务商为网络表单页面上运行,我非常愿意做这样的事情

<% if (!PageIsWebforms) 
    { 
     Html.Telerik()..... 
    } 
%> 

不幸的是,我想不出一个好方法来成功确定内页是否是WebForms页面。有没有人有任何想法我可以做到这一点?

回答

2

MVC页面继承了System.Web.UI.Page以外的内容,您可以测试Page is System.Web.MVC.ViewPage。 您可以使该属性使标记更容易。

+0

工作。如果页面是一个MVC页面,那么'Page'属性继承自'System.Web.MVC.ViewPage',所以检查'Page是System.Web.MVC.ViewPage'告诉我页面是否是MVC。谢谢! – KallDrexx 2011-05-10 15:25:30

+0

@KallDrexx,更直接的测试是检查'页面是System.Web.MVC.ViewPage'(注意**是**而不是**)。我编辑了我的答案,以包含实际的MVC页面类型。 – 2011-05-10 15:26:51

+0

是的,我只是注意到并编辑它:) – KallDrexx 2011-05-10 15:27:43