Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MVC路由:在路由开始处添加可选参数_Asp.net_Asp.net Mvc_Routing_Routes - Fatal编程技术网

Asp.net 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

我在路由配置文件中设置了以下路由。我有一个配置读取器,可以将这些映射到MVC样式的路由


[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