比方說,我有一個看起來像這樣的URL:如何代表ASP.NET MVC分層組織的URL
http://www.mysite.com/area/topic/subtopic/subsubtopic
其中主題和副主題的數目是任意的。
有沒有辦法在ASP.NET MVC中處理這種URL?
比方說,我有一個看起來像這樣的URL:如何代表ASP.NET MVC分層組織的URL
http://www.mysite.com/area/topic/subtopic/subsubtopic
其中主題和副主題的數目是任意的。
有沒有辦法在ASP.NET MVC中處理這種URL?
您可以使用通配符路由將任意數量的參數傳遞給某個操作,例如,像"../{topic}/{subtopics*}"
。在URL中的主題之後指定的所有內容都將按原樣傳遞給動作的參數,然後您可以將該值分割爲單獨的子主題。
Scott Guthrie在大約35:20提到了this video中的技術。
我認爲唯一的方法就是將區域映射到{controller}和主題{action},然後子主題只需要作用在參數上。
MVC確實將您限制爲控制器與操作的二維數組。
這聽起來像我會需要幾條路線和幾個控制器過載。 – 2010-01-13 23:20:58
不,默認的會與你上面描述的一樣。模型活頁夾將嘗試將URL中的任何額外'數據'映射到其所選動作的參數。 – 2010-01-13 23:24:58
我們正是用反射和調用方法來做到這一點。
我們增加了一個自定義.NET 404處理器對IIS和該處理程序採取的URL的部分,並調用它們沿着
namespace area{
class topic
{
void subtopic(param object[] subsubtopic)
{
//do page
}
}
}
顯然網址的精確映射到方法簽名將改變線路。
所以mydomain.com/pages/blogs/newblogs/tech 或mydomain.com/pages/blogs/newblogs/health
可能看起來像
namespace pages{
class blogs
{
void newblogs(string subject)
{
if(subject == "tech")
subject = "ace";
if(subject == "health")
subject = "itch it";
}
}
}
你也可能想看看在到restful urls。
不錯的技術。如果顧客主張,那一定是好的。 – 2010-01-14 21:17:49