如何制作Asp.Net界面模板

2014 年 5 月 4 日2960

一、基础知识

C:Program FilesMicrosoft Visual Studio .NET 2003VC#DesignerTemplates52

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

C:Program FilesMicrosoft Visual Studio .NET 2003VC#VC#WizardsCSharpAddWebFormWiz

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

其下的Templates52WebForm1.aspx文件定义新Asp.Net页面的*.aspx文件;

其下的Templates52Templates.inf文件指向了WebForm1.aspx文件;

C:Program FilesMicrosoft Visual Studio .NET 2003VC#CSharpProjectItemsWebProjectItemsUI

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

二、制作过程

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

VC#CSharpProjectItems WebProjectItemsItabby界面模板

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||Itabby通用模板|10|#2263||4534|0|ItabbyCommonForm.aspx

VC#DesignerTemplates52

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

VC#VC#WizardsItabbyAddCommonFormWizScripts52

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

VC#VC#WizardsItabbyAddCommonFormWizTemplates52

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"
说明:上述代码修改自微软:CSharpProjectItemsWCSharpAddWebFormWiz.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||Itabby通用模板|10|#2263||4534|0|ItabbyCommonForm.aspx
说明:
上述代码修改自微软:CSharpProjectItemsWebProjectItemsUIui.vsdir中:
....CSharpAddWebFormWiz.vsz||#2236|10|#2263||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#WizardsCSharpAddWebFormWizScripts52default.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">
<meta content="C#">
<meta content="JavaScript">
<meta content="http://http://www.zjjv.com///intellisense/ie5">
<meta content="平纹公司,科技服务生活,信息创造价值">
<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"> //用户自定义变量
<script src="[!output ITABBY_JS_SRC]"></script> //用户自定义变量
</head>

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

四、模板内容

模板的定制主要以修改VC#VC#WizardsItabbyAddCommonFormWizTemplates52ItabbyWebForm.aspx和修改VC#DesignerTemplates52NewWebFormCode.cs为主,实现不同的界面风格和代码逻辑;

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

VC#CSharpProjectItemsWebProjectItemsItabbyui.vsdir主要实现了与集成开发环境的向导交互.

查看本文来源

0 0