我正在开发一个大型的SAAS Webforms应用程序,它将慢慢迁移到MVC5。我们希望能够让一些客户“选择加入”新的MVC页面,因为它们是基于可配置的设置进行部署的。
MVC应用程序将与webforms应用程序位于同一项目中。到MVC的转换将逐个功能地进行,基本上是创建一个完整的MVC应用程序,与webforms应用程序并列。一旦实现了所有功能并且客户已经转换,我们将删除webforms项目,只保留MVC项目。
如果客户“选择加入”,那么我们希望他们查看任何存在的MVC视图,而不是原始的aspx页面。如果一个aspx页面还没有转换成MVC,或者他们的客户还没有选择加入,那么我们希望他们能看到这个aspx页面。
我主要关心的是防止用户在应该查看MVC页面时手动输入url并转到aspx页面,反之亦然。由于此应用程序是一个多租户系统,因此不能仅在路由配置中进行设置,因为这些配置仅在整个应用程序启动时加载一次。任何解决方案都需要动态检查每个用户的opt-in设置。
如果新的MVC路由而不是传统的aspx页面都存在,那么哪里是遵守“opt-in”设置的最佳位置,什么是实现这一逻辑的最佳方式?
一些同事提到,可以使用HTTPModule来检查aspx页面到MVC路由映射的集合。
基本上:如果optInToMvcSetting ==为真&& url.contains(".aspx"),则重定向到在aspxToRouteMap中找到的相应路由。
如果optInToMvcSettings ==为false && !url.contains(".aspx"),则重定向到在aspxToRouteMap中找到的相应aspx页面。
有人有什么想法或建议吗?
发布于 2016-06-05 15:48:01
为什么不同时使用两者呢?
保留MVC页面不变,然后在功能转换时添加WebForms路由。
然后,您可以简单地维护两个独立的导航渲染,一个用于WebForms,另一个用于MVC。默认情况下,show MVC,但如果用户选择,则show WebForms。浏览器cookie就足以提供此功能。
MVC导航最初将包括aspx链接,但随着转换的进行,这些链接将被替换为其MVC对应物。
MVC路由足够智能,可以区分MVC路由或aspx页面。
This question包含针对您的问题的信息。
https://stackoverflow.com/questions/37639187
复制相似问题