用MVC路由覆盖webforms

本文关键字:webforms 覆盖 路由 MVC | 更新日期: 2023-09-27 18:03:39

我在一个现有的ASP工作。. NET webforms项目-慢慢更新到MVC。我试图有条件地覆盖一些现有的webforms页面路由到新的MVC控制器。我可以很容易地给出一个"例子"。aspx的"URL到MVC控制器,但它不工作,如果有一个现有"的例子。aspx文件。

示例代码:

routes.MapRoute
            (
                name: "example",
                url: "example.aspx",
                defaults: new
                {
                    controller = "Example",
                    action = "Index"
                }
                constraints: new { useMvc= "1" }
            );

上面的代码工作得很好,并按照预期路由到控制器,除非有一个现有的"示例"。在我的解决方案中,Aspx"文件-在这种情况下,它会路由到该文件。但这正是我想要克服的。

现有的网页形式路由是否优先?有什么办法可以绕过这个吗?

我已经找到了使用MapPageRoute()来做相反的机制,但据我所见,这对我没有帮助。

用MVC路由覆盖webforms

你可以配置你的应用忽略你通过MVC处理的特定路由。你可以在注册新路由之前添加下面一行:

routes.IgnoreRoute("{*path}/example.aspx");

我还没有解决这个问题,但我已经找到了一个解决方法,可以实现相同的结果。

1)我重命名了"示例"。"foo.aspx"文件到其他文件

2)添加MapRoute()类似于我原来的问题(与约束)

3)使用MapPageRoute()来路由所有其他"示例"。调用"foo.aspx"

最后我不得不使用QueryStringConstraint逻辑,如另一个stackoverflow的答案:但这是一个单独的问题。

我将把这个问题再留几天,看看是否有一个"真正的"解决方案,然后再标记我自己的答案。