ASP.NET MVC独特的url路由

时间:2012-12-27 21:12:08

标签: asp.net-mvc routing

所以,我已经阅读了有关MVC路由的教程和书籍,并在我的项目中使用它,并对如何使用它来实现我想要的东西有了非常深刻的理解。

但是,我反对一些我还不太清楚的事情。

我想要完成的是每个客户端的唯一网址,它看起来不像“http://mysite.com/client/1”。这个网址会将浏览器带到客户端控制器,索引操作,ClientId = 1 ......显然。

我想要做的是拥有一个像“http://mysite.com/Acme”这样的网址,它会进行数据库查找以确定哪个客户端具有唯一名称“Acme”,然后重定向请求客户端控制器,索引视图并将ClientId设置为客户端上名称为“Acme”的任何内容。

默认路由不断捕获它,无法处理它。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我建议使用Global Action Filter来完成此操作,或者您可以使用静态路径创建路由,该路径将路由到您的查找控制器(例如,/ lookup / {companyname}将路由到您的数据库查找控制器)。

答案 1 :(得分:1)

" http://www.mysite.com/Clients/ {ClientName}"

routes.MapRoute(null, "Clients/{ClientName}", new{controller = "Clients", action = "Index"};

public class ClientsController : Controller
{
    public ActionResult Index(string clientName)
    {
        var id = Db.GetClientIdBy(clientName);

        // do your redirect...
    }
}    

或者我错过了这一点?