我想你已經錯過了路由點。它幾乎可以做任何你想要的。 你告訴它在哪裏映射。看看下面的路線的例子:
routes.MapRoute(
"Default",
"{something}",
new { controller="MyDefault", action="Something", something=""});
於是用URL http://mydomain.com/miles-davis1234/
將匹配路由指定的控制器和動作。在接下來的動作,你可以再使用{something}
標記的值:
public ActionResult Something(string something)
{
// something = miles-davis1234
var x = this._myService.WorkOutWhatSomethingIs(something);
// now do something with x
}
那麼,現在回答你關於「檢測它是否是一個用戶名或標籤」查詢,你可以做一些像上面。雖然我不會推薦它。我會做到以下幾點:
routes.MapRoute(
"Users",
"User/{username}",
new { controller="User", action="Detail", username="" });
routes.MapRoute(
"Tags",
"Tag/{tag}",
new { controller="Tag", action="Search", tag="" });
因爲如果你想使用相同的路線/令牌,會發生什麼情況,例如做標記和用戶名,當某人的用戶名是一樣的標籤?你無法分辨差異。無論如何,MVC模式的重點是「RESTful」。應該代表控制器(模型),動作和任何其他元數據。在你的例子中,你可以(也可能應該)甚至使用基本的{controller}/{action}/{data}
模式來進行路由。從數據的角度來看,它完全可以滿足你的需求。
或者對於一個路由類訪問模型來說可能就好了? – boblapointe 2013-03-27 15:41:23