我已经在global.asax
中设置了一个路由,它可以正常运行到一个路由目的地。喜欢home.aspx
但我实际上要做的是将正确定义的路线之后的所有页面路由为正常
mysite.com/token/home.aspx?demo=yes
点击指向联系人的链接?target = main us转到
mysite.com/token/contact.aspx?target=main
因为我总是想在所有页面上使用{token},但我希望网站像往常一样运作
目前,我点击了一个类似于联系人的链接,并且URL在URL栏中填充为mysite.com/token/contact.aspx?target=main
,但服务器显示无法找到该资源;我假设在服务器级别它的路由到/home.aspx/contact.aspx?target=main
是否存在通配符或设置以正常路由任何其他..或所有页面到实际请求的页面而不是静态路由 - 但仍然能够作为路由变量而不是参数访问令牌关于查询?
为了澄清这是.NET4上的ASP WEB FORMS而不是MVC
答案 0 :(得分:1)
您可以定义通配符路由并使用BuildManager返回正确的文件。
示例:
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 } };
}
}
希望能有所帮助!