您的位置:首页 > 编程语言 > ASP

如何制作Asp.Net界面模板

2006-11-10 15:31 447 查看
一、基础知识

       C:/Program Files/Microsoft Visual Studio .NET 2003/VC#/DesignerTemplates/2052

       其下的NewWebFormCode.cs文件是默认的新Asp.Net页面的后台代码文件;

       C:/Program Files/Microsoft Visual Studio .NET 2003/VC#/VC#Wizards/CSharpAddWebFormWiz

       其下的/Scripts/2052/default.js文件定义了基本的针对*.aspx页面的脚本操作;

       其下的/Templates/2052/WebForm1.aspx文件定义新Asp.Net页面的*.aspx文件;

       其下的/Templates/2052/Templates.inf文件指向了WebForm1.aspx文件;

       C:/Program Files/Microsoft Visual Studio .NET 2003/VC#/CSharpProjectItems/WebProjectItems/UI

       其下的ui.vsdir文件定义了模板向导的基本信息;

二、制作过程 

      建立VC#文件夹,其内部结构如下:

       VC#/CSharpProjectItems /WebProjectItems/Itabby界面模板/

                         ItabbyAddCommonFormWiz.vsz:内容如下:

                                                  VSWIZARD 7.0
                                                  Wizard=VsWizard.VsWizardEngine.7.1
                                                  Param="WIZARD_NAME = ItabbyAddCommonFormWiz"
                                                  Param="WIZARD_UI = FALSE"
                                                  Param="PROJECT_TYPE = CSPROJ"                                

                         ui.vsdir:内容如下:

                                                 ItabbyAddCommonFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|Itabby通用模板|10|#2263|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4534|0|ItabbyCommonForm.aspx

       VC#/DesignerTemplates/2052/

                        NewWebFormCode.cs:修改微软NewWebFormCode.cs而成;

       VC#/VC#Wizards/ItabbyAddCommonFormWiz/Scripts/2052/

                       default.js:修改微软default.js而成

      VC#/VC#Wizards/ItabbyAddCommonFormWiz/Templates/2052/

                       ItabbyWebForm.aspx :修改微软WebForm1.aspx而成

                       Templates.inf              :内容如下:

                                                ItabbyWebForm.aspx

三、分析说明

         CSharpProjectItems
                    webProjectItems
                          Itabby界面模板
                                   ItabbyAddCommonFormWiz.vsz
                                   内容:
                                   VSWIZARD 7.0
                                   Wizard=VsWizard.VsWizardEngine.7.1
                                   Param="WIZARD_NAME = ItabbyAddCommonFormWiz"
                                   Param="WIZARD_UI = FALSE"
                                   Param="PROJECT_TYPE = CSPROJ"
                                   说明:上述代码修改自微软:/CSharpProjectItems/WCSharpAddWebFormWiz.vsz中:
                                   VSWIZARD 7.0
                                   Wizard=VsWizard.VsWizardEngine.7.1
                                   Param="WIZARD_NAME = CSharpAddWebFormWiz"
                                   Param="WIZARD_UI = FALSE"
                                   Param="PROJECT_TYPE = CSPROJ"
                        ui.vsdir
                        内容:
                        ItabbyAddCommonFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|Itabby通用模板|10|#2263|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4534|0|ItabbyCommonForm.aspx
                        说明:
                        上述代码修改自微软:/CSharpProjectItems/WebProjectItems/UI/ui.vsdir中:
                       ../../CSharpAddWebFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2236|10|#2263|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4534|0|WebForm.aspx
        DesignerTemplates
                 2052
                         NewWebFormCode.cs
                         内容:
                         $NAMESPACE$        //微软自动处理
                         $CLASSNAME$        //微软自动处理
        VC#Wizards
                  ItabbyAddCommonFormWiz
                             Scripts
                                        2052
                                                default.js
                                                内容:
  // (c) Microsoft Corporation
  function AddDefaultServerScriptToWizard(selProj)
  {
   wizard.AddSymbol("DEFAULT_SERVER_SCRIPT", "JavaScript");
  }

  function AddDefaultClientScriptToWizard(selProj)
  {
      var prjScriptLang = selProj.Properties("DefaultClientScript").Value;
      // 0 = JScript
      // 1 = VBScript
      if(prjScriptLang == 0)
      {
   wizard.AddSymbol("DEFAULT_CLIENT_SCRIPT", "JavaScript");
      }
      else
      {
   wizard.AddSymbol("DEFAULT_CLIENT_SCRIPT", "VBScript");
      }
  }

  function AddDefaultDefaultHTMLPageLayoutToWizard(selProj)
  {
      var prjPageLayout = selProj.Properties("DefaultHTMLPageLayout").Value;
      // 0 = FlowLayout
      // 1 = GridLayout
      if(prjPageLayout == 0)
      {
   wizard.AddSymbol("DEFAULT_HTML_LAYOUT", "FlowLayout");
      }
      else
      {
   wizard.AddSymbol("DEFAULT_HTML_LAYOUT", "GridLayout");
      }
  }

  function OnFinish(selProj, selObj)
  {
      var oldSuppressUIValue = true;
   try
   {
    oldSuppressUIValue = dte.SuppressUI;
    var strProjectName = wizard.FindSymbol("PROJECT_NAME");
    var strSafeProjectName = CreateSafeName(strProjectName);
    wizard.AddSymbol("SAFE_PROJECT_NAME", strSafeProjectName);
    SetTargetFullPath(selObj);
    var strProjectPath  = wizard.FindSymbol("TARGET_FULLPATH");
    var strTemplatePath  = wizard.FindSymbol("TEMPLATES_PATH");

    //用户自定义代码开始
    var strPaths = strProjectPath.split('//');
                  var curResPath = "";
    var bFindModules = false;
    for(index = strPaths.length-1;index>=0;index--)
    {
     if(strPaths[index]=='modules')
     {
      bFindModules = true;
      break;
     }
     curResPath += "../";
    }
    if(bFindModules==false)
     curResPath = "";
    var curJsPath = curResPath + "Jscript/common.js";
    var curCssPath = curResPath + "style/common.css";
    var curImgPath = curResPath + "images"
    var curctlPath = curResPath + "Jscript/controlpanel.js"    
    wizard.AddSymbol("ITABBY_JS_SRC", curJsPath);
    wizard.AddSymbol("ITABBY_CSS_SRC", curCssPath);
    wizard.AddSymbol("ITABBY_IMG_SRC", curImgPath);
    wizard.AddSymbol("ITABBY_CTL_SRC", curctlPath);
    //用户自定义代码结束

    var strTpl = "";
    var strName = "";
    var InfFile = CreateInfFile();
    
    // add the default project props for the aspx file before we
    // render it
    AddDefaultServerScriptToWizard(selProj);
    AddDefaultClientScriptToWizard(selProj);
    AddDefaultTargetSchemaToWizard(selProj);
    AddDefaultDefaultHTMLPageLayoutToWizard(selProj);
    // render our file
    AddFilesToCSharpProject(selObj, strProjectName, strProjectPath, InfFile, true);
    AddReferencesForWebForm(selProj);
   }
   catch(e)
   {
    if( e.description.length > 0 )
     SetErrorInfo(e);
    return e.number;
   }
      finally
      {
    dte.SuppressUI = oldSuppressUIValue;
    if( InfFile )
     InfFile.Delete();
      }
  }

  function SetFileProperties(oFileItem, strFileName)
  {
      if(strFileName == "WebForm1.aspx")
      {
   oFileItem.Properties("SubType").Value = "Form";
      }
  }
  说明:上述修改自微软:/VC#/VC#Wizards/CSharpAddWebFormWiz/Scripts/2052/default.js

       Templates
                 2052
                       ItabbyWebForm.aspx
                       内容:
  <%@ Page language="c#" Codebehind="$FILENAME$.cs" AutoEventWireup="false" Inherits="$INHERITS$" %>//微软自动处理
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  <html>
    <head>
      <title>平纹科技</title>
      <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
      <meta content="C#" name="CODE_LANGUAGE">
      <meta content="JavaScript" name="vs_defaultClientScript">
      <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
      <meta content="平纹公司,科技服务生活,信息创造价值" name="keywords">
      <META http-equiv="Content-Type" content="text/html; charset=gb2312">
      <meta name=vs_defaultClientScript content="[!output DEFAULT_CLIENT_SCRIPT]">    //微软自动处理
      <meta name=vs_targetSchema content="[!output DEFAULT_TARGET_SCHEMA]">        //微软自动处理
      <LINK href="[!output _fcksavedurl=""[!output" _fcksavedurl=""[!output" ITABBY_CSS_SRC]" type="text/css" rel="stylesheet">      //用户自定义变量
      <script src="[!output ITABBY_JS_SRC]"></script>                              //用户自定义变量
    </head>
            

                Templates.inf
                 内容:
                 ItabbyWebForm.aspx
                 说明:上述代码修改自微软:VC#Wizards/CSharpAddWebFormWiz/Templates/2052/Templates.inf:
                 WebForm1.aspx

四、模板内容

       模板的定制主要以修改/VC#/VC#Wizards/ItabbyAddCommonFormWiz/Templates/2052ItabbyWebForm.aspx和修改VC#/DesignerTemplates/2052/NewWebFormCode.cs为主,实现不同的界面风格和代码逻辑;

       /VC#/VC#Wizards/ItabbyAddCommonFormWiz/Scripts/2052/default.js主要实现与aspx页面的交互,如相对路径的制定,自动替换等操作;

      /VC#/CSharpProjectItems/WebProjectItems/Itabby界面模板/ItabbyAddCommonFormWiz.vsz和VC#/CSharpProjectItems/WebProjectItems/Itabby界面模板/ui.vsdir主要实现了与集成开发环境的向导交互.

    

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息