C# Asp.net路由Url转换?

C# Asp.net路由Url转换?,c#,asp.net,url-rewriting,routing,C#,Asp.net,Url Rewriting,Routing,假设我有一个sql server表: id Name Band -------------------- 1 John Beatles 2 Paul Beatles 3 George Beatles 4 Ringo Beatles 5 Jim Doors 我想要一个个人详细信息页面,如: http://localhost/Music/Beatles/Paul 我想将其视为: http://localho

假设我有一个sql server表:

id   Name      Band
--------------------
1    John      Beatles
2    Paul      Beatles
3    George    Beatles
4    Ringo     Beatles 
5    Jim       Doors
我想要一个个人详细信息页面,如:

http://localhost/Music/Beatles/Paul

我想将其视为:

http://localhost/Details.aspx?id=2

所以-我写这段代码是为了注册一个简单的路由:

void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.MapPageRoute("MyRoute", "Music/{Band}/{Name}", "~/Details.aspx");
}
但我不明白:

当Asp.net获取
http://localhost/Music/Beatles/Paul
他怎么知道保罗的价值是
2

你是在告诉我,每次asp.net遇到
Paul
时,他都应该去DB扫描一个预定义的唯一列(
Name
,在本例中)并获取它的列
ID
值吗

或者我应该像这样将Paul的值注入url中:

 http://stackoverflow.com/questions/13938994/jquery-conditional-validation-based-on-select-text 
                                       ^
                                       |
---------------------------------------
我的情况是:


http://localhost/Music/Beatles/2/Paul

Asp.net本质上不知道Paul的ID是
2

你必须自己把这个逻辑写在某个地方。您可以编写自己的
RouteHandler
并自己进行路由(这将执行db调用以确定正确的ID)

就我个人而言,我会让aspx页面自己处理信息,而不是假设它有一个实际的ID

下面是一个自定义路由处理程序的代码示例(取自)

并登记路线

RouteTable.Routes.Add("MyCustomRoute", new Route("Music/{Band}/{Name}", new CustomRouteHandler());

你应该看看属性运算。我的另一个解决方案呢?(像这样将id插入URL)?您需要自定义路由处理程序来执行此操作。您不清楚:-)。当将id注入url时,我不需要扫描数据库。但当只写保罗和扫描数据库时,这完全是另一回事。我应该怎么做?看一看,您将修改
GetHttpHandler
中的代码以执行Paul-to-2转换,并使用正确的参数加载asp页面。抱歉:-)但是在web表单示例中我该如何做呢?(在哪里)。谢谢
RouteTable.Routes.Add("MyCustomRoute", new Route("Music/{Band}/{Name}", new CustomRouteHandler());