一、基础知识
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" 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主要实现了与集成开发环境的向导交互.
全文完毕,请访问http://itabby.com/支持本土事业,谢谢。