zoukankan      html  css  js  c++  java
  • 利用asp.net 2.0构建企业级门户平台(2、实现页面请求的调度)

     

    页面调度采用了UrlRewrite技术,关于该技术的资料可以参考我转发的一篇文章:http://erpcrm.cnblogs.com/articles/232924.html

    首先,让我们新建一个网站(我使用的是 VWD 2005 Express BETA2)。
    1、添加一个default.aspx ,
    该窗体不需要做什么工作,它的存在只有一个意义,就是告诉IIS 把类似的请求(www.xxx.com/)转过来,否则的话,ASP.NET是截获不到这种请求的。
    2、我们在哪截获用户的请求呢?
    当然是Global.asax了(当然了,你可以把代码放到Global.asax.cs中,或者自己实现IHttpModuler来达到类似的效果)。
    代码如下:

    ;Global.asax文件,只有一行,可以看出具体的代码文件都在Global.asax.cs里面
    <%@ Application Language="C#" CodeBehind="Global.asax.cs" Inherits="Global" %>

    Global.asax.cs文件:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;


    public class Global : System.Web.HttpApplication
    {
            protected void Application_BeginRequest(Object sender, EventArgs e)
          {
           
                  String appPath = Request.AppRelativeCurrentExecutionFilePath;

                  if (appPath.StartsWith("~/Admin/", true, null))
            {
                return;
            }
            if (appPath.Equals("~/WebResource.axd", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }
            if (appPath.StartsWith("~/ApplicationTemplate/", StringComparison.OrdinalIgnoreCase))
           {
                return;
            }
                   
                this.Context.RewritePath("~/ApplicationTemplate/DefaultTemplate.aspx");                 

          }  

     }
    从以上的代码可以看出:
    除那三个特殊的路径外,其它的请求全部重写到"~/ApplicationTemplate/DefaultTemplate.aspx",
    那么 DefaultTemplate.aspx 包含什么呢?      
    让我们新建一个文件夹 ApplicationTemplate 在该文件夹下新建一个web窗体 DefaultTemplate.aspx。
    只 是为了演示UrlRewrite,DefaultTemplate.aspx中你可以输入一些简单的内容,如:“这是一个默认的模版”;
    这样当我们请求“/default.aspx”时,呈现在我们面前的页面是DefaultTemplate.aspx的内容。
    不信?你先动手试试吧!

    3、如果我们想 把 / 重写到 ApplicatonTemplate/defaultTemplate.aspx,而把 /product/ 重写到ApplicationTemplate/ProductTemplate.aspx,怎么做呢?

    首先我们在ApplicationTemplate文件夹下,添加一个ProductTemplate.aspx。
    我们可能会想到在 Global.asax.cs 的 Application_BeginReque方法里再添加一个对路径的判断,显然这是不灵活的。
    怎么更灵活呢?就让我们来设计一个页面调度引擎吧!
    在这里,我们叫他 ApplicationManager。
    添加一个类文件 ApplicationManager.cs ,   VWD提示我们要把它放到 App_Code目录下,就按它说的办吧!

    该类有个方法叫  String  GetNewPath(String  oldPath);
    我们要这个方法输入“/ default.aspx”返回 “~/ApplicationTemplate/DefaultTemplate.aspx”,
    输入"/product/" 返回 “~/ApplicationTemplate/ProductTemplate.aspx” 
    如果输入的是“/Admin”,还应该返回“/Admin”。

    我们假定GetNewPath()方法有这个功能,那么让我们改造一下 :Applicaton_BeginReques;

     protected void Application_BeginRequest(Object sender, EventArgs e)
        {
           
            String appPath = Request.AppRelativeCurrentExecutionFilePath;
       String newPath = ApplicationManager.GetNewPath(appPath) 
            if(newPath != appPath)
    {
     this.Context.RewritePath(newPath);
    }              

        }

    今天先到这,我的下一篇文章会把源码提供出来,也许会和本文中的不太一致,但意思不会差。
  • 相关阅读:
    PHP基础入门(五)---PHP面向对象实用基础知识
    PHP基础入门(四)---PHP数组实用基础知识
    PHP基础入门(三)---PHP函数基础
    PHP基础入门(二)---入门基础知识必备
    PHP基础入门(一)---世界上最好用的编程语言
    【JavaScript OPP基础】---新手必备
    高级软件工程第六次作业:“希希敬敬对”团队作业-3
    高级软件工程第五次作业:“希希敬敬对”团队作业-2
    第四次软件工程团队作业:“希希敬敬对”队团队展示
    高级软件工程第三次作业:数独游戏界面功能
  • 原文地址:https://www.cnblogs.com/KUDO/p/486287.html
Copyright © 2011-2022 走看看