用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处理的特定路由。你可以在注册新路由之前添加下面一行:
routes.IgnoreRoute("{*path}/example.aspx");
我还没有解决这个问题,但我已经找到了一个解决方法,可以实现相同的结果。
1)我重命名了"示例"。"foo.aspx"文件到其他文件
2)添加MapRoute()类似于我原来的问题(与约束)
3)使用MapPageRoute()来路由所有其他"示例"。调用"foo.aspx"
最后我不得不使用QueryStringConstraint逻辑,如另一个stackoverflow的答案:但这是一个单独的问题。
我将把这个问题再留几天,看看是否有一个"真正的"解决方案,然后再标记我自己的答案。