如何在WebFormASP.Net中模拟MVC路由?

如何在WebFormASP.Net中模拟MVC路由?,asp.net,webforms,routing,Asp.net,Webforms,Routing,你们都已经看到了MVC是如何在默认情况下以URL的形式缩小URL的:{controller}/{action}/{id}。这是在RouteConfig.cs中完成的 我正在寻找一种方法,使像mywebsite.com/Page/Default.aspx?id=100&Browser=ffmywebsite.com/Page/Default/100?Browser=ff这样的网络表单URL更改为mywebsite.com/Page/Default/100?应该在Globa.ascx中完成 Stac

你们都已经看到了MVC是如何在默认情况下以URL的形式缩小URL的:{controller}/{action}/{id}。这是在RouteConfig.cs中完成的

我正在寻找一种方法,使像
mywebsite.com/Page/Default.aspx?id=100&Browser=ff
mywebsite.com/Page/Default/100?Browser=ff这样的网络表单URL更改为
mywebsite.com/Page/Default/100?应该在Globa.ascx中完成


StackOverFlow网站中有一些帖子指导如何将保留URL重定向到某个页面,很明显,我的问题是另外一个问题,我正在寻找一种在Global.ascx中提供模式的方法。

在解决方案资源管理器的项目下,添加一个新的ASP.NET项目“Global.asax”

添加using语句:

using System.Web.Routing;
在应用程序启动事件中,键入路由URL,例如:

public class Global : System.Web.HttpApplication
{

    protected void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.MapPageRoute("default1", "Page/Default", "~/Page/Default.aspx");
        RouteTable.Routes.MapPageRoute("default2", "Page/Default/{controller}/{action}/{id}", "~/Page/Default.aspx");
    }
然后,在页面加载事件中:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string controller = RouteData.Values["controller"] + "";
        string action = RouteData.Values["action"] + "";
        string id = RouteData.Values["id"] + "";
    }
}

谢谢兄弟,我尝试了你的解决方案,当我完整地键入URL时,它起作用了,当我没有准备
控件
操作
id
时,我遇到了错误404,因为URL不起作用。我是否需要在routeUrl
{*control}
中使用
*
?。毕竟,似乎没有办法精确模拟MVC路由。我已经更新了上面的答案。您需要为pure
mywebsite.com/Page/Default添加另一条路由