所以,我已经阅读了有关MVC路由的教程和书籍,并在我的项目中使用它,并对如何使用它来实现我想要的东西有了非常深刻的理解。
但是,我反对一些我还不太清楚的事情。
我想要完成的是每个客户端的唯一网址,它看起来不像“http://mysite.com/client/1”。这个网址会将浏览器带到客户端控制器,索引操作,ClientId = 1 ......显然。
我想要做的是拥有一个像“http://mysite.com/Acme”这样的网址,它会进行数据库查找以确定哪个客户端具有唯一名称“Acme”,然后重定向请求客户端控制器,索引视图并将ClientId设置为客户端上名称为“Acme”的任何内容。
默认路由不断捕获它,无法处理它。
有什么想法吗?
答案 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...
}
}
或者我错过了这一点?