解析 URL 重写的查询字符串 asp.net 4.0
我需要使用 asp.net 4.0 中的路由功能解决 url 重写问题。 当用户输入 url 时
www.mysite.com/product.aspx?id=101
然后右侧页面显示,但假设我更改页面位置和名称,并且当用户输入 url 时,例如
www.mysite.com/product.aspx?id=101
那么将会出现页面未找到错误。
所以请告诉我如何使用 asp.net 4.0 路由功能解决这种情况。 是否可以 ?
我处理路由就像我的示例代码
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteTable.Routes.MapPageRoute
("Source", "Source/{ID}/{Title}", "~/Source.aspx");
RouteTable.Routes.MapPageRoute
("Source1", "MyData/Source/{ID}/{Title}", "~/MyData/Source.aspx");
}
上面的代码只是示例,我用这种方式进行 url 重写。这很容易。 但是,如果我需要通过路由解决上述 url 映射问题,那么我该怎么做以及需要在 Application_Start
事件中编写什么样的代码。
我想要当用户输入
www.mysite.com/product.aspx?id=101
那么它应该重定向到
www.mysite.com/prod/Myproduct.aspx?prodid=101
此网址。所以请指导我如何借助 asp.net 4.0 路由功能进行这种映射。
I need to solve a problem with url rewrite using routing feature in asp.net 4.0.
when user type url like
www.mysite.com/product.aspx?id=101
then right page shows but suppose if i change the page location and name and when user type url like
www.mysite.com/product.aspx?id=101
then page not found error will occur.
So please tell me how could I solve this situation using asp.net 4.0 routing feature.
is it possible ?
I handler routing like and my sample code
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteTable.Routes.MapPageRoute
("Source", "Source/{ID}/{Title}", "~/Source.aspx");
RouteTable.Routes.MapPageRoute
("Source1", "MyData/Source/{ID}/{Title}", "~/MyData/Source.aspx");
}
The code above is just sample and I this way do the url rewrite. It is very easy.
But if I need to solve my above url mapping problem with routing then how could I do so and what kind of code I need to write in Application_Start
event.
I want when user type
www.mysite.com/product.aspx?id=101
then it should redirect to
www.mysite.com/prod/Myproduct.aspx?prodid=101
This url. So please guide me how could I do this kind of mapping with the help of asp.net 4.0 routing feature.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
路由到包含查询字符串的路径的唯一方法是使用自定义处理程序。默认情况下,路由会传递 RouteData 中的变量。
所以你有3个选择。
1) 编写一个自定义路由处理程序来重写采用 RouteData 的路径并将其添加到查询字符串中。我为 这个问题中的这个。
2) 更新 MyProduct.aspx 以检查 QueryString 中的产品
id
(如果在prodid
中找不到)并使用MapPageRoute
(新页面已访问原始查询字符串)。3)使用IIS7重写规则
The only way you can route to a path containing a querystring is to use a custom handler. By default routing passes variables in the RouteData.
So you have 3 options.
1) write a custom route handler to rewrite the path taking RouteData and adding it to the querystring. I wrote some code similar code for this in this question.
2) update MyProduct.aspx to check for product
id
in the QueryString if not found inprodid
and useMapPageRoute
(the new page has access the the original querystring).3) use IIS7 rewrite rules