.net mvc 路由机制和地址栏重写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net mvc 路由机制和地址栏重写相关的知识,希望对你有一定的参考价值。

现在的地址是: test.aspx?id=1;
有大量的url是这样的,要怎么优化比较好?
路由和重写哪一种机制是可以双向的呢?

对于MVC中的Routing是单独的一个项目,没有开源,现在在webform程序中是可以设置的。
对于每个asp.net的Application_Start()方法中,都有一个全局静态的路由表(RouteTable

该方法可以对其路由表的Collection集合注册路由,就是实例化一个Route类。

在前台通过RouteTable.Routws["key"]/RouteTable.Routws[index]获取追问

mvc路由不是用get的方式请求的,没办法获取到?id=**的这个值,只能用Route
去获取;所以我问的是,怎么样才能把test.aspx?id=1的地址可以自动映射成test/1.html;而输入test/1.html的时候映射的是test.aspx?id=1 这样就是双向的,我就可以不用更改程序里的url了

追答

可以用QueryString方式获取。前面的东西都不变,Request...

参考技术A 推荐使用asp.net路由机制。
可参考:
http://www.cnblogs.com/artech/archive/2012/03/20/aspnet-routing-02.html
http://blog.csdn.net/eqera/article/details/8442274
参考技术B MVC怎么可能是这样的地址?
你确定用的是MVC?
url重写也是伪静态的办法,最好还是使用MVC的路由机制

asp.net mvc2.0重写MvcHandler

经过我的测试,在1.0中重写MvcHandler,配置好后会调用自定义的handler,但是在2.0中,确没有任何作用。
这是为什么呢???
代码很简单
什么都没改,简单的继承再override ProceeRequest方法,然后写个IRouteHandler实现GetHttpHandler方法来返回我继承自MvcHandler的IHttpHandler对象,再在global.asax中配置下路由。就这么简单,不知道1楼是否试过?
回复重典======
可否举个配置的例子来,谢谢。过了我会加分的

======================================问题解决了,深入点的问题还是上msdn找答案
MVC2.0中使用BeginProcessRequest方法来处理请求而不实用ProcessRequest。所以得重载BeginProcessRequest

参考技术A 最好把代码贴出来,在mvc2中对handler是有所修改的 参考技术B WebConfig 的httpHandlers、modules节点是注册了你自定义的类了呢

以上是关于.net mvc 路由机制和地址栏重写的主要内容,如果未能解决你的问题,请参考以下文章

请问在.net mvc3.0中,如何在action之间传递参数,切记不能在地址栏中看到

javascript [js:重写地址栏]动态重写地址栏,无需重新加载。 #js

地址栏中的URL重写

vue 直接输入路由地址进入_vue地址栏直接输入路由无效问题

facebook如何重写浏览器地址栏中页面的源URL?

AngularJS地址栏变化为啥不跳转到页面