使用ASP.NET 4 Web窗体的默认URL路由

时间:2013-09-30 09:25:11

标签: asp.net webforms routing

似乎我们需要为webform路由中的每个页面指定路由

我想使用默认路由到名为 cms.aspx 的页面,每个页面都使用名为 nameofurl 的参数 expect default.aspx

有时我想发送cms.aspx多于一个参数,例如

mydomain.com/cms.apx?nameurl=somevalue

mydomain.com/cms.apx?nameurl=somevalue&order=6

我有这个代码,但它不是解决方案,因为你必须告诉路由页面的名称

  routes.MapPageRoute("",
        "pageName/{nameofurl}",
        "~/cms.aspx")

我想要这样的东西

 routes.MapPageRoute("",
        "?/{nameofurl }",
        "~/cms.aspx")

有时我希望它像这样

routes.MapPageRoute("SalesRoute",
    "?/{nameofurl}/{order}",
    "~/cms.aspx");

任何想法如何在不指定页面名称的情况下实现这种路由?

1 个答案:

答案 0 :(得分:0)

您可以创建如下所示的路线:

routes.MapPageRoute("Route1","{nameofurl}","~/cms.aspx")
routes.MapPageRoute("Route2","{nameofurl}/{order}","~/cms.aspx")
routes.MapPageRoute("Route3","{nameofurl}/{order}/{abc}","~/cms.aspx")

如果没有其他包含2或3个参数的页面,上述路线将起作用。但是如果你想要路由一些其他页面并且有2个参数要传递,那么你需要在参数之前提一个硬编码的字符串,否则新路由将覆盖旧路由。

例如:

routes.MapPageRoute("Route4","{nameofurl}/{order}","~/products.aspx")

在上述情况下,Route4将覆盖Route 2.因此,您需要定义如下所示的路由:

routes.MapPageRoute("Route4","products/{nameofurl}/{order}","~/products.aspx")

您可以在以下网址找到与网址相关的文章:

http://karmic-development.blogspot.in/2013/10/url-routing-in-aspnet-web-forms-part-2.html

谢谢&的问候,

Munjal