我已经在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
发布于 2013-01-24 21:38:43
您可以定义通配符路由并使用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 } };
}
}希望能帮上忙!
https://stackoverflow.com/questions/11036090
复制相似问题