Asp.net MVC路由:在路由开始处添加可选参数
我在路由配置文件中设置了以下路由。我有一个配置读取器,可以将这些映射到MVC样式的路由Asp.net MVC路由:在路由开始处添加可选参数,asp.net,asp.net-mvc,routing,routes,Asp.net,Asp.net Mvc,Routing,Routes,我在路由配置文件中设置了以下路由。我有一个配置读取器,可以将这些映射到MVC样式的路由 [route name=“customers”url=“customers/{statename}/{marketname}/{pagenumber}”] [controller name=“Customers”action=“Display”/ [/路线] [route name="pcustomers" url="{customername}/customers/{statename}/{marketn
[route name=“customers”url=“customers/{statename}/{marketname}/{pagenumber}”]
[controller name=“Customers”action=“Display”/
[/路线]
[route name="pcustomers" url="{customername}/customers/{statename}/{marketname}/{pagenumber}"]
[controller name="Customers" action="Display" /]
[/route]
正如您所知道的,第一条和第二条路线基本相同,但是第二条路线中的{customername}部分是相同的
第一个匹配URL,如
www.abc.com/customers/TX/Austin/5
其中作为第二个匹配URL,如
www.abc.com/CustomerX/customers/TX/Austin/5
我的问题是,有没有办法将这两个路由合并为一个,并且仍然能够匹配这两个URL?您可以使用子域并将第二个URL更改为customerx.abc.com/customers/tx/Austin/5吗?把customerx药水钉在末端作为可选参数怎么样?
abc.com/customers/tx/Austin/5?customer=x我会这样走:
customers/{statename}/{marketname}/{customer}
并将页码作为查询字符串执行。
这样,url将是:
www.abc.com/customers/tx/Austin?pagenumber=1
或
url的构建也很可能遵循网站的使用模式:
这是我脑海中闪过的想法之一。唉,我不能那样做。我们有一个使用Webforms的现有网站,所有URL都已投入生产。我们正在以零碎的方式将此应用程序迁移到MVC。因此,我们必须维护相同的url方案:(在这种情况下,可能如本文所述永久重定向是一种解决方案()不幸的是,我不能使用不同的URL方案。为了向后兼容和SEO,我们必须坚持使用现有的方案。@Praveen-你可能已经解决了这个问题,但是为什么不能对新的URL方案执行301重定向呢?
www.abc.com/customers/tx/Austin/CustomerX