1

我正在使用 ASP.NET WebForms 和 C#。我正在尝试为不同的页面添加路线。这是来自我的 global.asax 的示例代码,它注册了 Routes

protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
    //AppSettings = AppConfig.AppSettings.Settings;
    //ConSettings = AppConfig.ConnectionStrings.ConnectionStrings;
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Add("Admin_Users_Update", new Route("Admin/Users/Update/{UserId}", new RoutingHandler("~/Forms/Admin/Users/UpdateUser.aspx")));
}

它工作正常。如果我们打开像 /Admin/Users/Update/1 这样的 url,它会很好地打开编辑表单。但是,如果不遵循模式或进行任何更改,问题就会开始。就像我们进入

/Admin/Users/Update/1/2

或者

/Admin/Users/Update/

它只会显示一个 404 页面。

你知道我们该如何处理吗?因此,如果 url 模式的差异很小,我们应该仍然能够处理它。

4

1 回答 1

1

好吧,如果您指定一个模式并要求路由处理程序查找它,它只会查找该模式。该框架遵循您的规则。

你的选择是

1)找出所有不同的可能模式并注册路线(您可能可以为/1/2等使用一些id)。

2)您可以为路由规则指定正则表达式。看这里

3)查看开源url rewriter。它可能会给你你想要的东西.. 样品在这里

4)跳过路由并使用您自己的http模块,该模块位于管道中侦听请求并自己处理。您可能仍然可以通过阅读路由处理程序部分并应用它来利用内置路由。我不确定,但值得一试。

于 2011-07-25T14:48:01.340 回答