2011-06-26 103 views
7

在像http://mysite.com/controller/action/123/name-of-article这样的URL中,是否有一种方法可以定义路由,以便将'123 /物品名称'部分作为字符串传入?用斜线定义ASP.NET MVC路由

回答

13

你可以做一个通配符路线:

MapRoute("{controller}/{action}/{*id}") 
0

我不知道你的要求是什么,但是你确定你想通过文章向控制器的名称?如果只是传递ID,然后从数据库中做SELECT来获得名称,你会更好吗?

如果你仍然想有一个URL像http://mysite.com/controller/action/123/name-of-article 但只有在ID传给你可以使用路由这样

routes.MapRoute(
       "MyNewRoute",   // Route name 
       "articles/edit/{id}/{name}",  // URL 
       new { controller = "Articles", action = "Edit", id = "" }, // Defaults 
       new[] { "YourApp.UI.Controllers" }      // Namespaces 
      ); 

那么你的控制器动作

public ActionResult Edit(int id) 
{ 

}