using System; using System.Web.Routing; namespace WebApp { public class Global : System.Web.HttpApplication { void RegisterRouters(RouteCollection routes) { //参数含义: //第一个参数:路由名称--随便自己起 //第二个参数:路由规则 //第三个参数:该路由规则交给哪一个页面来处理 routes.MapPageRoute("my-route-name", "default/{id}", "~/default.aspx"); //...当然,您还可以添加更多路由规则 } protected void Application_Start(object sender, EventArgs e) { RegisterRouters(RouteTable.Routes); } } }
这是在Global.ascx.cs中先注册路由规则
请问各路的大牛 项目中有很多aspx页面 每个页面的访问都需要注册路由规则吗?
一般不需要吧,我们网站经常要添加些个性的专题,结合你的问题,我是采用这个的形式解决webform,和mvc混和使用的。不需要改代码。配置文件后台直接可以更改。很方便
protected void Application_Start(object sender, EventArgs e) { this.RegisterIgnoreRoutes(RouteTable.Routes);//添加 RegisterRouters(RouteTable.Routes); }
public virtual void RegisterIgnoreRoutes(RouteCollection routes) { RouteTable.Routes.RouteExistingFiles = false; routes.IgnoreRoute("News/{resource}.aspx/{*pathInfo}"); }
然后 web.config
<configSections> <section name="rewriter" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/> </configSections> <rewriter configSource="UrlRewriter.config"/>
UrlRewriter.config
<?xml version="1.0" encoding="utf-8"?> <rewriter> <rewrite Fixed="True" url="^/a/a(.*)/(.*)$" to="~/pay/sendpayment.aspx?OrderIds=$1&Area=$2" processing="stop"/> </rewriter>
非常感谢你,能解释一下UrlRewriter.config中是什么意思吗?
@D、boy: url伪静态,或者叫地址重写