首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP WebForms路由

ASP WebForms路由
EN

Stack Overflow用户
提问于 2012-06-14 15:10:00
回答 1查看 119关注 0票数 1

我已经在global.asax中设置了一个路由,它可以很好地工作到单个路由目的地。就像home.aspx

但实际上我要做的是按照定义的路由将所有页面路由为正常路径。

mysite.com/token/home.aspx?demo=yes

单击指向Contact?target=main的链接,我们将转到

mysite.com/token/contact.aspx?target=main

因为我总是希望在所有页面上使用{token},但我希望该网站像往常一样运行。

目前,我单击了一个链接,比如contact,URL在地址栏中被填充为mysite.com/token/contact.aspx?target=main,但是服务器说找不到资源;我假设在服务器级别,它的路由到/ like . as /contact.aspx?target=main

是否有通配符或设置可以正常路由其他..。或者所有页面到实际请求的页面,而不是静态路由--但是仍然能够以路由变量的形式访问令牌而不是查询中的参数?

澄清一下,这是.NET4上的ASP.WebForms,而不是MVC

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-24 21:38:43

您可以定义通配符路由并使用BuildManager返回正确的文件。

示例:

代码语言:javascript
复制
public class TokenRoute : Route 
{
    class TokenRouteHandler : IRouteHandler
    {
        #region IRouteHandler Members

        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            var path = Convert.ToString(requestContext.RouteData.Values["path"]);
            if (string.IsNullOrEmpty(path))
            {
                path = "Default.aspx";
            }

            var vPath = "~/" + path;

            HttpContext.Current.Items[RoutingUtil.UrlRoutingVirtualPathKey] = vPath;

            return (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(vPath, typeof(IHttpHandler));
        }

        #endregion
    }

    public TokenRoute(string token) 
           : base(token + "/{*path}", null, new RouteValueDictionary(), new TokenRouteHandler())
    {
        DataTokens = new RouteValueDictionary { { "token", token } };
    }
}

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11036090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档