使用MVC路由为旧page.aspx?

Ian*_*ink 2 asp.net asp.net-mvc asp.net-mvc-routing asp.net-mvc-4

我们正在将一个旧的asp.net网站重新编写成MVC4.

我们的网站有许多链接看起来像这样(我们无法控制但必须支持):

 www.some.com/page.aspx?id=5 
Run Code Online (Sandbox Code Playgroud)

有没有办法得到/page.aspx?id=5的请求到路由,以便我们可以处理请求,将其传递给控制器​​/操作,然后从那里处理它?

afz*_*ulh 6

在RouteConfig中,添加路由(在默认路由之前):

routes.MapRoute(
                    name: "DefaultAspx",
                    url: "page.aspx",
                    defaults: new { controller = "MyAspxPage", action = "Index", id = UrlParameter.Optional }
                );
Run Code Online (Sandbox Code Playgroud)

在控制器中捕获页面ID:

(MyAspxPageController)

public ActionResult Index(int id)
{
    // Do whatever needed
    //return View();
}
Run Code Online (Sandbox Code Playgroud)

  • 好消息.我想补充一点,对于其他可能想要保留原始.aspx文件的人来说,你需要重命名它或遵循这些[说明](http://weblogs.asp.net/jgalloway /archive/2013/08/29/asp-net-mvc-routing-intercepting-file-requests-like-index-html-and-what-it-teaches-about-how-routing-works.aspx)路由一个存在的文件/资源​​. (2认同)