ASP.NET 中的路由处理

发布于 2024-11-26 00:05:52 字数 816 浏览 0 评论 0原文

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

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 模式几乎没有差异,我们应该仍然能够处理它。

I am working in ASP.NET WebForms and C#.
I am trying to add routes for different pages. This is sample code from my global.asax which registers 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")));
}

It works fine. And if we open url like /Admin/Users/Update/1 it opens the edit form nicely.
But problem starts if don't follow the pattern or make any change. Like if we enter

/Admin/Users/Update/1/2

or

/Admin/Users/Update/

it will simply show a 404 page.

Do you know any way how can we handle it? So that if there is little difference in url pattern, we should be able to still handle that.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

恰似旧人归 2024-12-03 00:05:52

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

您的选择是

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

2)可以为路由规则指定正则表达式。请查看此处

3) 查看开源 url 重写器 。它可能会给你你想要的..示例这里

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

Well, if you specify a pattern and ask the route handler to look for it, it is only going to look for that pattern. The framework follows your rules.

Your options are

1) find out all the different possible patterns and register the routes (you can probably use some id for /1/2 etc).

2) You can specify regular expressions for routing rules. Look here.

3) check out the open source url rewriter . it may give you what you want.. sample here.

4) skip the routing and use your own http module that sits in the pipeline listening for requests and handle it yourself. You can probably still leverage the built in routing by reading the route handler section and applying it. I am not sure but worth a try.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文