MVC路由:在路由的开头添加可选参数

时间:2010-08-07 19:54:36

标签: asp.net asp.net-mvc routing routes

我在路由配置文件中设置了以下路由。我有一个配置阅读器,将它们映射到MVC风格的路由。

[route name="customers" url="customers/{statename}/{marketname}/{pagenumber}"] [controller name="Customers" action="Display" /] [/route]

[route name="pcustomers" url="{customername}/customers/{statename}/{marketname}/{pagenumber}"]
  [controller name="Customers" action="Display" /]
[/route]

[route name="pcustomers" url="{customername}/customers/{statename}/{marketname}/{pagenumber}"] [controller name="Customers" action="Display" /] [/route]

正如您所知,第一条和第二条路线几乎相同,但第二条路线中的{customername}部分。

第一个与网址匹配 的 www.abc.com/customers/TX/Austin/5

其中第二个与网址匹配 的 www.abc.com/CustomerX/customers/TX/Austin/5

我的问题是,有没有办法将这两条路线合二为一,仍然可以匹配两个网址?

2 个答案:

答案 0 :(得分:2)

您是否可以使用子域名并将第二个网址更改为customerx.abc.com/customers/tx/Austin/5?如何将customerx药水作为可选参数添加到最后? abc.com/customers/tx/Austin/5?customer=x

答案 1 :(得分:1)

我会做这样的路线:

customers/{statename}/{marketname}/{customer}  

并将pagenumber作为查询字符串。 这样的网址就是:

www.abc.com/customers/tx/Austin?pagenumber=1

www.abc.com/customers/tx/Austin/CustomerX

网址的构建也很可能遵循网站的使用模式:

  1. 点击客户
  2. 选择州
  3. 选择市场名称
  4. 浏览页面
  5. 点击客户