一 基础知识
C:\Program Files\Microsoft Visual Studio NET \VC#\DesignerTemplates\
其下的NewWebFormCode cs文件是默认的新Asp Net页面的后台代码文件
C:\Program Files\Microsoft Visual Studio NET \VC#\VC#Wizards\CSharpAddWebFormWiz
其下的\Scripts\ \default js文件定义了基本的针对* aspx页面的脚本 *** 作
其下的\Templates\ \WebForm aspx文件定春衡悉义新Asp Net页面的* aspx文件
其下的\Templates\ \Templates inf文件指向了WebForm aspx文件
C:\Program Files\Microsoft Visual Studio NET \VC#\CSharpProjectItems\WebProjectItems\UI
其下的ui vsdir文件定义了模板向导的基本信息
二 制作过程
建立VC#文件夹 其内部结构如下:
VC#\CSharpProjectItems \WebProjectItems\Itabby界面模板\
ItabbyAddCommonFormWiz vsz 内容如下
VSWIZARD Wizard=VsWizard VsWizardEngine Param= WIZARD_NAME = ItabbyAddCommonFormWiz Param= WIZARD_UI = FALSE Param= PROJECT_TYPE = CSPROJ
ui vsdir 内容如下
ItabbyAddCommonFormWiz vsz|{FAE EC F d BF B C F EFBC}|Itabby通用模板| |# |{FAE EC F d BF B C F EFBC}| | |ItabbyCommonForm aspx
VC#\DesignerTemplates\ \
NewWebFormCode cs 修改微软NewWebFormCode cs而成
VC#\VC#Wizards\ItabbyAddCommonFormWiz\Scripts\ \
default js 修改微软default js而成
VC#\VC#Wizards\ItabbyAddCommonFormWiz\Templates\ \
ItabbyWebForm aspx 修改微软WebForm aspx而成
Templates inf 内容如下
ItabbyWebForm aspx
三 分析说明
CSharpProjectItems webProjectItems Itabby界面模板 ItabbyAddCommonFormWiz vsz 内容: VSWIZARD 扒乎 拦仿 Wizard=VsWizard VsWizardEngine Param= WIZARD_NAME = ItabbyAddCommonFormWiz Param= WIZARD_UI = FALSE Param= PROJECT_TYPE = CSPROJ 说明:上述代码修改自微软:\CSharpProjectItems\WCSharpAddWebFormWiz vsz中: VSWIZARD Wizard=VsWizard VsWizardEngine Param= WIZARD_NAME = CSharpAddWebFormWiz Param= WIZARD_UI = FALSE Param= PROJECT_TYPE = CSPROJ ui vsdir 内容: ItabbyAddCommonFormWiz vsz|{FAE EC F d BF B C F EFBC}|Itabby通用模板| |# |{FAE EC F d BF B C F EFBC}| | |ItabbyCommonForm aspx 说明: 上述代码修改自微软:\CSharpProjectItems\WebProjectItems\UI\ui vsdir中: \ \CSharpAddWebFormWiz vsz|{FAE EC F d BF B C F EFBC}|# | |# |{FAE EC F d BF B C F EFBC}| | |WebForm aspx DesignerTemplates NewWebFormCode cs 内容: $NAMESPACE$ //微软自动处理 $CLASSNAME$ //微软自动处理 VC#Wizards ItabbyAddCommonFormWiz Scripts default js 内容:
// (c) Microsoft Corporation function AddDefaultServerScriptToWizard(selProj) { wizard AddSymbol( DEFAULT_SERVER_SCRIPT JavaScript ) }
function AddDefaultClientScriptToWizard(selProj) { var prjScriptLang = selProj Properties( DefaultClientScript ) Value // = JScript // = VBScript if(prjScriptLang == ) { wizard AddSymbol( DEFAULT_CLIENT_SCRIPT JavaScript ) } else { wizard AddSymbol( DEFAULT_CLIENT_SCRIPT VBScript ) } }
function AddDefaultDefaultHTMLPageLayoutToWizard(selProj) { var prjPageLayout = selProj Properties( DefaultHTMLPageLayout ) Value // = FlowLayout // = GridLayout if(prjPageLayout == ) { 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 index>= index ) { if(strPaths[index]== modules ) { bFindModules = true break } curResPath += / } if(bFindModules==false) curResPath = var curJsPath = curResPath + Jscript/mon js var curCssPath = curResPath + style/mon 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 >) SetErrorInfo(e) return e number } finally { dte SuppressUI = oldSuppressUIValue if( InfFile ) InfFile Delete() } }
function SetFileProperties(oFileItem strFileName) { if(strFileName == WebForm aspx ) { oFileItem Properties( SubType ) Value = Form } }
说明:上述修改自微软:\VC#\VC#Wizards\CSharpAddWebFormWiz\Scripts\ \default js
Templates ItabbyWebForm aspx 内容: <%@ Page language= c# Codebehind= $FILENAME$ cs AutoEventWireup= false Inherits= $INHERITS$ %>//微软自动处理 <!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN > <> <head> <title>平纹科技</title> <meta content= Microsoft Visual Studio NET name= GENERATOR > <meta content= C# name= CODE_LANGUAGE > <meta content= JavaScript name= vs_defaultClientScript > <meta content= name= vs_targetSchema > <meta content= 平纹公司 科技服务生活 信息创造价值 name= keywords > <META equiv= Content Type content= text/charset=gb > <meta name=vs_defaultClientScript content= [!output DEFAULT_CLIENT_SCRIPT] > //微软自动处理 <meta name=vs_targetSchema content= [!output DEFAULT_TARGET_SCHEMA] > //微软自动处理 <LINK [!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\ \Templates inf: WebForm aspx
四 模板内容
模板的定制主要以修改\VC#\VC#Wizards\ItabbyAddCommonFormWiz\Templates\ ItabbyWebForm aspx和修改VC#\DesignerTemplates\ \NewWebFormCode cs为主 实现不同的界面风格和代码逻辑
\VC#\VC#Wizards\ItabbyAddCommonFormWiz\Scripts\ \default js主要实现与aspx页面的交互 如相对路径的制定 自动替换等 *** 作
lishixinzhi/Article/program/net/201311/121061、用FSO 读取模板文件到 变量里面;
2、用replace 函数替换,ok了;
3、注意:目前的模板有好几种,比较简单点的CMS系统里面的是,分开成 头部模板,底部模板这样的,放在数据库里调用的;
一种是写成 .ini 文件的 用[页面文件][/页面文件]这样的标签分割的,如: [页面头]<title>{$web_title}</title>[/页面头][页面脚]</body></html>[/明衡世页面脚]这种样式的,这样的ini文件 不光要用FSO读取,拦禅还要用到正则表达式来分离[页面头][/页面头]这样的标签,提取中间的代码激肢,然后将{$web_title}替换成数据库内容的。关于正则表达式的源代码在 vbscript 的帮助文件里面有,不需要在网上找别人写的代码了(帮助文件里面的代码在目前来看应该最优秀的一个正则代码了)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)