2009-11-20 38 views
3

據我所知,在ASP.Net DynamicData(也許經常ASP或MVC)我可以提供我自己的RouteHandler什麼時候可以使用我自己的RouteHandler?

routes.Add(new DynamicDataRoute("{table}/{action}.aspx") { 
    RouteHandler = new CustomRouteHandler() 
}); 

public class CustomRouteHandler : DynamicDataRouteHandler 
{ 
    public override IHttpHandler CreateHandler(DynamicDataRoute route, MetaTable table, string action) 
    { 
     // what kind of cool stuff should I add in here? 
     return base.CreateHandler(route, table, action); 
    } 

    protected override string GetCustomPageVirtualPath(MetaTable table, string viewName) 
    { 
     // what kind of cool stuff should I add in here? 
     return base.GetCustomPageVirtualPath(table, viewName); 
    } 

    protected override string GetScaffoldPageVirtualPath(MetaTable table, string viewName) 
    { 
     // what kind of cool stuff should I add in here? 
     return base.GetScaffoldPageVirtualPath(table, viewName); 
    } 
} 

但有人可以解釋我怎麼會填補這一類呢? (舉一些例子代碼)

我會重寫什麼來做一些有用的事情?

我可以用自己的RouteProvider做些什麼?給我舉例說明哪些地方有用。

作爲一個例子,我想爲某些表做一個401重定向,但繼續使用其他表的默認行爲(當然是基於角色或登錄用戶)。

回答

2

您可以在任何數量的Web應用程序中將它用於搜索引擎優化(搜索引擎優化)。過去可能通過URL重寫完成的事情。例如,如果您要構建博客引擎,並且想要在包含您文章的關鍵字的url中使用slug,則可以將其添加爲處理程序。

http://mysite.com/blog/cheap-umbrellas-in-san-diego.aspx

然後,您可以創建一個路由處理通過類似ID(/博客/後處理這個特定的模式,並通過塞查找您的文章(廉價的雨傘,在山迭)VS .aspx?id = 123465)

+0

謝謝。你做過這樣的事嗎?你能展示一些示例代碼嗎? – 2009-11-20 20:10:52

+0

請仔細閱讀以下內容:http://chriscavanagh.wordpress.com/2008/03/11/aspnet-routing-goodbye-url-rewriting/ – Sean 2009-11-20 20:21:55

+0

而且這也是:http://msdn.microsoft.com/zh-cn/ -us /雜誌/ dd347546.aspx – Sean 2009-11-20 20:23:41

相關問題