【问题标题】:When would I use my own RouteHandler?我什么时候会使用自己的 RouteHandler?
【发布时间】:2010-12-18 20:56:25
【问题描述】:

我了解在 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 重定向,但对其他表继续使用默认行为(当然,基于角色或登录用户)。

【问题讨论】:

    标签: c# .net asp.net routing


    【解决方案1】:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2018-05-05
    • 2016-08-19
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多