C# Asp.net路由Url转换?
假设我有一个sql server表: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
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());