【发布时间】:2015-10-09 15:34:11
【问题描述】:
我正在开发一个现有的 ASP.NET 网络表单项目 - 慢慢更新到 MVC。我试图通过路由到新的 MVC 控制器有条件地覆盖一些现有的 web 表单页面。我可以轻松地将“example.aspx”URL 路由到 MVC 控制器,但如果存在现有的“example.aspx”文件,它就不起作用。
示例代码:
routes.MapRoute
(
name: "example",
url: "example.aspx",
defaults: new
{
controller = "Example",
action = "Index"
}
constraints: new { useMvc= "1" }
);
上面的代码工作正常,并按预期路由到控制器,除非我的解决方案中有一个现有的“example.aspx”文件 - 在这种情况下,它会路由到那个。但这正是我想要覆盖的。
现有的网络表单路由是否给予优惠待遇?有什么办法可以规避吗?
我找到了使用 MapPageRoute() 进行反向操作的机制,但据我所知,这对我没有帮助。
【问题讨论】:
-
如果你想覆盖,为什么不在添加路由后删除
example.aspx? -
@mason:因为它是基于约束条件的。有时我想覆盖,但有时我需要旧功能。
-
@DavidG:很高兴找到那个链接。不幸的是,正如那里所述,runAllManagedModulesForAllRequests 选项带有性能和安全问题。同样,我想避免使用 URLRewriter 选项,因为它不是基础 C#。在 C# 中肯定有一种方法可以重新路由旧的 Web 表单页面(不删除它们)?
-
@ScottHammer 除非您运行的网站对性能至关重要,否则我认为您无需担心。
标签: c# asp.net asp.net-mvc webforms asp.net-mvc-routing