我什么时候可以使用自己的RouteHandler?

时间:2009-11-20 19:47:51

标签: c# .net asp.net routing

我理解在ASP.Net DynamicData(也许是普通的ASP或MVC)中,我可以提供自己的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重定向,但继续使用其他表的默认行为(当然,基于角色或登录用户)。

1 个答案:

答案 0 :(得分:2)

您可以在任意数量的Web应用程序中将其用于SEO(搜索引擎优化)。过去可以通过URL重写完成的事情。例如,如果您要构建一个博客引擎,并希望在包含文章关键字的网址中插入一个slug,则可以将其添加为处理程序。

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

然后你可以创建一个路由处理程序来处理这个特定的模式,并通过slug(cheap-umbrellas-in-san-diego)和ID之类的东西来查找你的帖子(/blog/post.aspx?id=123465 )