【发布时间】:2012-02-04 06:11:11
【问题描述】:
我意识到有大量关于这个主题的文章和资源,但似乎都只展示了如何将 url 周围的 category=shoes 之类的查询字符串移动到不同的位置,例如这个产品/{类别}
我有以下查询字符串:profile.aspx?q=98c2b15f-90c3-4a7f-a33f-0e34b106877e
我试图实现一个 RoutHandler 来查询数据库以查找用户名并创建一个类似 mydomain.com/usersname
的 url这是我尝试过的(现在一切都是硬编码的,直到我让它工作):
void Application_Start(object sender, EventArgs e)
{
RegisterRoute(System.Web.Routing.RouteTable.Routes);
}
void RegisterRoute(System.Web.Routing.RouteCollection routes)
{
routes.Add("Profiles", new System.Web.Routing.Route("profile/{profile}", new RouteHandler()));
}
这是处理程序类:
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string username = requestContext.RouteData.Values["profile"] as string;
HttpContext.Current.Items["q"] = "98c2b15f-90c3-4a7f-a33f-0e34b106877e";
return BuildManager.CreateInstanceFromVirtualPath("~/pub/profile.aspx", typeof(Page)) as Page;
}
Profile.aspx 实际上查找“q”查询字符串。并且通过上述设置,它没有找到它。
我做错了什么?我如何路由或重写 url 使其漂亮 + 保留它以便页面可以找到它需要的查询字符串?
任何帮助都会很棒。提前致谢。
【问题讨论】:
标签: c# .net-4.0 url-rewriting url-routing webforms