bm加载过程及default、index页面定位

bm默认打开的是default指向templates\default\forums\default.aspx,如果采用index.aspx访问,虽然url变成了index.aspx,但是仍然显示的是default.aspx的内容。

分析代码发现:

每次页面请求触发Web\Global.asax.cs中的Application_BeginRequest函数对请求进行处理,

在Application_BeginRequest->BbsRouter.Route()调用BbsRouter.cs中的GetCurrentUrlScheme(),该函数通过调用UrlScheme.Parse(RawUrl)对url进行了重新组织:

if (main.Length == 0 || (main.Length == 5 && string.Compare(main, "index", true) == 0))
{
    main = "default";

    if (urlFormat == UrlFormat.Query)
        originalMain = "?default";
}
else if (urlFormat == UrlFormat.Query && string.Compare(main, "default", true) == 0)
    originalMain = "?default";

如果Router成功则根据模板生成页面newurl = TemplateManager.ParseTemplate(routeResult.OriginalPath)并重写HttpContext.Current.RewritePath(newurl);

posted @ 2012-03-24 23:57  Johnsonton's blog  阅读(406)  评论(0编辑  收藏  举报