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

CodeSmith系列(二)——使用CodeSmith生成ASP.NET后台代码

2011-05-24 17:12 645 查看
因为表单的后台代码都差不多,所以采用了CodeSmith生成。由于表单的控制是基于XML的,所以可以根据XML自定义生成。由于没时间,就不多写了,具体模板代码见最后。

在这里,先选择变量。如下:




XMl文件内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<FieldConfig>
<GlobalDefaultConfig>
<Description>付款确认单</Description>
<Width>360</Width>
</GlobalDefaultConfig>
<Fields>
<Group Title="表单信息" Columns="2">
<Field TextControlID="txtAreaName" Disabled="true">所属大区</Field>
<Field TextControlID="txtBranchCompany" Disabled="true">所属分公司</Field>
<Field TextControlID="txtProvince" Disabled="true">所属省份</Field>
<Field TextControlID="txtCitys" Disabled="true">所属城市</Field>
<Field TextControlID="txtShopName" Disabled="true" MaxLength="20">门店名称</Field>
<Field TextControlID="txtName" Disabled="true">主持老师</Field>
<Field TextControlID="txtOracleNO" Disabled="true">Oralce号</Field>
<Field TextControlID="txtMarginNumber" Disabled="true">保证金号码号</Field>
<Field TextControlID="txtPayTime" AllowBlank="false">付款时间</Field>
<Field TextControlID="txtPayer" AllowBlank="false">付款人</Field>
<Field TextControlID="tblPaymentAmount" AllowBlank="false">付款金额(元)</Field>
<Field TextControlID="ddlCollectingCompany" AllowBlank="false">收款公司名称</Field>
<Field TextControlID="ddlDueBank" AllowBlank="false">收款银行名称</Field>
<Field TextControlID="ddlCollectingBankAccount" AllowBlank="false">收款银行帐号</Field>
<Field TextControlID="txtBranchContacts">分公司联系人</Field>
<Field TextControlID="txtContactPhoneNumber">联系电话</Field>
<Field TextControlID="tblFinancialConfirm" Disabled="true">财务确认</Field>
<!--<Field TextControlID="cblFinancialConfirm">财务确认</Field>-->
</Group>
</Fields>
<Controls>
<Control>
<QueryStrings>
<!--培训阶段-->
<Query Name="DriverPhasesid">1E355FC6D4A744F4AF11BB0811E2A066</Query>
</QueryStrings>
<Disabled FieldsName="AttributeValue">
<ControlField>加盟套餐费(元)</ControlField>
<ControlField>改型套餐费(元)</ControlField>
<ControlField>保证金(元)</ControlField>
<ControlField>虹膜套餐款(元)</ControlField>
<ControlField>虹膜续约款(元)</ControlField>
</Disabled>
<!--<ControlField Disabled="true">Cost1</ControlField>
<ControlField Disabled="true">Cost2</ControlField>
<ControlField Disabled="true">Cost3</ControlField>
<ControlField Disabled="true">Cost4</ControlField>
<ControlField Disabled="true">Cost5</ControlField>
<ControlField Disabled="true">ddfBank1</ControlField>
<ControlField Disabled="true">ddfBank2</ControlField>
<ControlField Disabled="true">ddfBank3</ControlField>
<ControlField Disabled="true">ddfBank4</ControlField>
<ControlField Disabled="true">ddfBank5</ControlField>-->
</Control>
<Control>
<QueryStrings>
<!--签约阶段-->
<Query Name="DriverPhasesid">72512CBA542E43029B91F9FB3155D4DD</Query>
</QueryStrings>
<!--<ControlField Disabled="true">Cost0</ControlField>
<ControlField Disabled="true">Cost2</ControlField>
<ControlField Disabled="true">Cost4</ControlField>
<ControlField Disabled="true">Cost5</ControlField>-->
<Disabled FieldsName="AttributeValue">
<ControlField>培训费(元)</ControlField>
<!--<ControlField>加盟套餐费</ControlField>-->
<ControlField>改型套餐费(元)</ControlField>
<!--<ControlField>保证金</ControlField>-->
<ControlField>虹膜套餐款(元)</ControlField>
<ControlField>虹膜续约款(元)</ControlField>
</Disabled>
</Control>
<Control>
<QueryStrings>
<!--续约-->
<Query Name="DriverPhasesid">BDA31689C7B54F4EAE925A5390F56C99</Query>
</QueryStrings>
<!--<ControlField Disabled="true">Cost0</ControlField>
<ControlField Disabled="true">Cost1</ControlField>
<ControlField Disabled="true">Cost2</ControlField>
<ControlField Disabled="true">Cost4</ControlField>
<ControlField Disabled="true">Cost5</ControlField>-->
<Disabled FieldsName="AttributeValue">
<ControlField>培训费(元)</ControlField>
<ControlField>加盟套餐费(元)</ControlField>
<ControlField>改型套餐费(元)</ControlField>
<!--<ControlField>保证金</ControlField>-->
<ControlField>虹膜套餐款(元)</ControlField>
<ControlField>虹膜续约款(元)</ControlField>
</Disabled>
</Control>
<Control>
<QueryStrings>
<!--改型-->
<Query Name="DriverPhasesid">DEB4897EBD28440AB0C60F5D27ED677E</Query>
</QueryStrings>
<!--<ControlField Disabled="true">Cost0</ControlField>
<ControlField Disabled="true">Cost1</ControlField>
<ControlField Disabled="true">Cost4</ControlField>
<ControlField Disabled="true">Cost5</ControlField>-->
<Disabled FieldsName="AttributeValue">
<ControlField>培训费(元)</ControlField>
<ControlField>加盟套餐费(元)</ControlField>
<!--<ControlField>改型套餐费</ControlField>-->
<!--<ControlField>保证金</ControlField>-->
<ControlField>虹膜套餐款(元)</ControlField>
<ControlField>虹膜续约款(元)</ControlField>
</Disabled>
</Control>
<Control>
<QueryStrings>
<!--转约-->
<Query Name="DriverPhasesid">464BEE8157B943B1AC9C3930FD6D774C</Query>
</QueryStrings>
<!--<ControlField Disabled="true">Cost0</ControlField>
<ControlField Disabled="true">Cost1</ControlField>
<ControlField Disabled="true">Cost2</ControlField>
<ControlField Disabled="true">Cost5</ControlField>-->
<Disabled FieldsName="AttributeValue">
<ControlField>培训费(元)</ControlField>
<ControlField>加盟套餐费(元)</ControlField>
<ControlField>改型套餐费(元)</ControlField>
<!--<ControlField>保证金</ControlField>-->
<!--<ControlField>虹膜套餐款</ControlField>-->
<ControlField>虹膜续约款(元)</ControlField>
</Disabled>
</Control>
<Control>
<QueryStrings>
<!--虹膜续约-->
<Query Name="DriverPhasesid">6E022231D0AC41EFAD8E685D0B5FB768</Query>
<Query Name="DriverPhasesid">60846B34E4F8482297192A2A0AE5D068</Query>
<Query Name="DriverPhasesid">CFCFB79EA19F4B529819641E02EE8EE5</Query>
</QueryStrings>
<!--<ControlField Disabled="true">Cost0</ControlField>
<ControlField Disabled="true">Cost1</ControlField>
<ControlField Disabled="true">Cost2</ControlField>
<ControlField Disabled="true">Cost3</ControlField>
<ControlField Disabled="true">Cost4</ControlField>-->
<Disabled FieldsName="AttributeValue">
<ControlField>培训费(元)</ControlField>
<ControlField>加盟套餐费(元)</ControlField>
<ControlField>改型套餐费(元)</ControlField>
<ControlField>保证金(元)</ControlField>
<ControlField>虹膜套餐款(元)</ControlField>
<!--<ControlField>虹膜续约款</ControlField>-->
</Disabled>
</Control>
</Controls>
</FieldConfig>

生成的代码如下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Ext.Net;
using NBShopService;
using NBShopCommon;                     //辅助类库
using NBShopCommon.Ext;                 //Ext函数库以及扩展方法
using System.Collections.Generic;
namespace NBShop.UserControls.Form
{
/// <summary>
/// 付款确认单
/// </summary>
public partial class ConfirmationForPayment : System.Web.UI.UserControl
{
#region 公共属性
/// <summary>
/// 店铺ID
/// </summary>
public string ShopID
{
get
{
return Request.QueryString["ObjectID"]??Request.QueryString["ShopID"];
}
}
/// <summary>
/// 表单类型
/// </summary>
public string FormType
{
get
{
return Request.QueryString["FormType"];
}

}
/// <summary>
/// 当前表单ID
/// </summary>
public string CurrentFormID
{
get
{
return (ViewState["CurrentFormID"] ?? string.Empty).ToString();
}
set
{
ViewState["CurrentFormID"] = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
//在SharePoint中赋予权限加载Ext资源文件
ResourceManager1.BuildAllPrivilegesForExtNET();
//注册jquery脚本文件
this.Page.ClientScript.RegisterClientScriptInclude("JQuery4.4", "/js/jquery-1.4.4.min.js");
try
{
//绑定数据,设置界面逻辑
Loading();
}
catch (Exception ex)
{
//记录错误日志
LogManager.WriteErrorLog(ex);
}
}

/// <summary>
///  绑定数据,设置界面逻辑
/// </summary>
private void Loading()
{
using (NBShopDataContext _db = new NBShopDataContext())
{
#region 设置参数
if (!IsPostBack)
{
//设置审批列表的加载路径和参数
pnlExamineList.AutoLoad.Url = "/FormServerTemplates/ExamineList.aspx?PTCode=" + Request.QueryString["PTCode"] + "&TaskId=" + Request.QueryString["TaskId"];
///加载配置(使用的是扩展方法,用于配置Ext控件)
this.LoadConfigs("ConfirmationForPayment", Context);
//TODO:设置参数
#region 绑定下拉列表
#region 绑定收款公司名称
//TODO:请绑定下拉列表收款公司名称
//ExtControlHelper.BindComobox(this, _db.SelectGeneralFromTableINFO(ShopID, CurrentFormID,
//"CollectingCompany").ToList()
//, "ddlCollectingCompany", "AttributeValue", "AttributeID", "所选值");
#endregion
#region 绑定收款银行名称
//TODO:请绑定下拉列表收款银行名称
//ExtControlHelper.BindComobox(this, _db.SelectGeneralFromTableINFO(ShopID, CurrentFormID,
//"DueBank").ToList()
//, "ddlDueBank", "AttributeValue", "AttributeID", "所选值");
#endregion
#region 绑定收款银行帐号
//TODO:请绑定下拉列表收款银行帐号
//ExtControlHelper.BindComobox(this, _db.SelectGeneralFromTableINFO(ShopID, CurrentFormID,
//"CollectingBankAccount").ToList()
//, "ddlCollectingBankAccount", "AttributeValue", "AttributeID", "所选值");
#endregion
#endregion
var _context = _db.SelectConfirmationForPaymentINFO(ShopID).FirstOrDefault();
if (_context!=null)
{
//设置控件的值
this.SetControlValues(_context);
if (!string.IsNullOrEmpty(_context.ConfirmationForPaymentID))
{
CurrentFormID = _context.ConfirmationForPaymentID;
}
else
{
CurrentFormID = _db.GetNewGuid();
}
}
}
#endregion

}
GC.Collect();
}

//保存
protected void btnSave_Click(object sender, DirectEventArgs e)
{
try
{
//显示保存进度条
X.Msg.Show(new MessageBoxConfig
{
Message = "正在保存数据, 请稍后...",
ProgressText = "正在保存数据...",
Width = 300,
Wait = true,
WaitConfig = new WaitConfig { Interval = 200 },
IconCls = "ext-mb-download",
AnimEl = this.btnSave.ClientID
});
if (Save())
{
//执行流程驱动
ResourceManager1.SetSubmitScript(ShopID, false);
}
}
catch (Exception ex)
{
NBShopCommon.LogManager.WriteErrorLog(ex);
ResourceManager1.AddScript(" setTimeout(function () { Ext.MessageBox.hide(); Ext.Msg.notify('完成', '保存失败!'); }, 1000);");
}

}
//保存数据
private bool Save()
{
//实例化LINQ To SQl类上下文对象
NBShopDataContext _db = new NBShopDataContext();
try
{
if (_db.Connection.State == ConnectionState.Closed)
_db.Connection.Open();
//事务开始
_db.Transaction = _db.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable);
//TODO:保存数据

//提交事务
_db.Transaction.Commit();

//ObjectService _os = new ObjectService();
//bool _bobjprc = _os.SaveObjectProcessInfo(Request.QueryString["ObjectID"] ?? string.Empty, Request.QueryString["PTCode"] ?? string.Empty);
//bool _bobjnp = _os.SaveObjectPN(Request.QueryString["ObjectID"] ?? string.Empty, Request.QueryString["PhasesId"] ?? string.Empty);
return true;
}
catch (Exception ex)
{
//回滚事务
_db.Transaction.Rollback();
LogManager.WriteErrorLog(ex);
ResourceManager1.AddScript(" setTimeout(function () { Ext.MessageBox.hide(); Ext.Msg.notify('完成', '保存数据失败!');}, 3000);");
return false;
}
}
//提交
protected void btnSubmit_Click(object sender, DirectEventArgs e)
{
try
{
//显示提交进度条
X.Msg.Show(new MessageBoxConfig
{
Message = "正在提交数据, 请稍后...",
ProgressText = "正在提交数据...",
Width = 300,
Wait = true,
WaitConfig = new WaitConfig { Interval = 200 },
IconCls = "ext-mb-download",
AnimEl = this.btnSumbit2.ClientID
});
if (Save())
{
//流程操作并执行脚本
ResourceManager1.SetSubmitScript(ShopID, true);
}
}
catch (Exception ex)
{
LogManager.WriteErrorLog(ex);
ResourceManager1.AddScript(" setTimeout(function () { Ext.MessageBox.hide();Ext.Msg.notify('完成', '提交失败!'); }, 2000);");
}
}
}
}

模板代码如下:

<%--
Name: 根据XML生成用户控件表单
Author: LWQ
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8" Description="生成Ext.NET用户控件处理代码" CompilerVersion="v3.5" %>
<%@ Property Name="ClassName" Type="System.String" Default="" Optional="True" Category="Optional" Description="用户控件名称。" %>
<%--加载使用访问数据库的组件SchemaExplorer,并声明其使用的命名空间。--%>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context"  Description="对应的数据主表" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>
<%@ Import Namespace="System.Windows.Forms.Design"%>
<%@ Assembly Name="System.Design" %>
<%@ Import Namespace="System.Xml.Linq" %>
<%@ Assembly Name="System.Xml.Linq" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.IO" %>
<script runat="template">
///配置文件路径
private string _userFileName = string.Empty;
[Editor(typeof(FileNameEditor), typeof(System.Drawing.Design.UITypeEditor)),Category("Custom"), Description("请选择配置XML文件。")]
public string UserFileName
{
get {return _userFileName;}
set {_userFileName= value;}
}
XElement elements =null;
//返回XML的Key。
public string GetFormKey()
{
return ClassName;
}
</script>
<%
if(File.Exists(_userFileName))
{
elements = XElement.Load(_userFileName);
}
%>
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Ext.Net;
using NBShopService;
using NBShopCommon;                     //辅助类库
using NBShopCommon.Ext;                 //Ext函数库以及扩展方法
using System.Collections.Generic;
namespace NBShop.UserControls.Form
{
<% if(elements.Element("GlobalDefaultConfig").Element("Description")!=null) {%>
/// <summary>
/// <%=elements.Element("GlobalDefaultConfig").Element("Description").Value %>
/// </summary>
<% } %>
public partial class <%=ClassName%> : System.Web.UI.UserControl
{
#region 公共属性
/// <summary>
/// 店铺ID
/// </summary>
public string ShopID
{
get
{
return Request.QueryString["ObjectID"]??Request.QueryString["ShopID"];
}
}
/// <summary>
/// 表单类型
/// </summary>
public string FormType
{
get
{
return Request.QueryString["FormType"];
}

}
/// <summary>
/// 当前表单ID
/// </summary>
public string CurrentFormID
{
get
{
return (ViewState["CurrentFormID"] ?? string.Empty).ToString();
}
set
{
ViewState["CurrentFormID"] = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
//在SharePoint中赋予权限加载Ext资源文件
ResourceManager1.BuildAllPrivilegesForExtNET();
//注册jquery脚本文件
this.Page.ClientScript.RegisterClientScriptInclude("JQuery4.4", "/js/jquery-1.4.4.min.js");
try
{
//绑定数据,设置界面逻辑
Loading();
}
catch (Exception ex)
{
//记录错误日志
LogManager.WriteErrorLog(ex);
}
}

/// <summary>
///  绑定数据,设置界面逻辑
/// </summary>
private void Loading()
{
using (NBShopDataContext _db = new NBShopDataContext())
{
#region 设置参数
if (!IsPostBack)
{
//设置审批列表的加载路径和参数
pnlExamineList.AutoLoad.Url = "/FormServerTemplates/ExamineList.aspx?PTCode=" + Request.QueryString["PTCode"] + "&TaskId=" + Request.QueryString["TaskId"];
///加载配置(使用的是扩展方法,用于配置Ext控件)
this.LoadConfigs("<%=ClassName%>", Context);
//TODO:设置参数
<%
if(elements.Descendants("Field").Where(p=>p.Attribute("TextControlID").Value.Substring(0,3)=="ddl").Count()>0){
%>
#region 绑定下拉列表
<%
var ddls = elements.Descendants("Field").Where(p => p.Attribute("TextControlID").Value.Substring(0, 3) == "ddl");
foreach (var item in ddls){
%>
#region 绑定<%=item.Value%>
//TODO:请绑定下拉列表<%=item.Value%>
//ExtControlHelper.BindComobox(this, _db.SelectGeneralFromTableINFO(ShopID, CurrentFormID,
//"<%=item.Attribute("AttributeTypeCode")==null?item.Attribute("TextControlID").Value.Substring(3):item.Attribute("AttributeTypeCode").Value %>").ToList()
//, "<%=item.Attribute("TextControlID").Value %>", "AttributeValue", "AttributeID", "所选值");
#endregion
<% }%>
#endregion
<%} %>
var _context = _db.Select<%=ClassName%>INFO(ShopID).FirstOrDefault();
if (_context!=null)
{
//设置控件的值
this.SetControlValues(_context);
if (!string.IsNullOrEmpty(_context.<%=ClassName%>ID))
{
CurrentFormID = _context.<%=ClassName%>ID;
}
else
{
CurrentFormID = _db.GetNewGuid();
}
}
}
#endregion
<%
if(elements.Descendants("Field").Where(p=>p.Attribute("TextControlID").Value.Substring(0,3)=="cbl").Count()>0){
%>
#region 绑定复选框组
<%
var cbos = elements.Descendants("Field").Where(p => p.Attribute("TextControlID").Value.Substring(0, 3) == "cbl");
foreach (var item in cbos){
%>
#region 绑定<%=item.Value%>
//TODO:请绑定复选框组<%=item.Value%>
//ExtControlHelper.BindCheckGroup(this, _db.SelectGeneralFromTableINFO(ShopID, CurrentFormID,
//"<%=item.Attribute("AttributeTypeCode")==null?item.Attribute("TextControlID").Value.Substring(3):item.Attribute("AttributeTypeCode").Value %>").ToList()
//, "<%=item.Attribute("TextControlID").Value %>", "AttributeValue", "AttributeID", "CheckValue",4);
#endregion
<% }%>
#endregion
<%} %>

<%
if(elements.Descendants("Field").Where(p=>p.Attribute("TextControlID").Value.Substring(0,3)=="rbl").Count()>0){
%>
#region 绑定单选框组
<%
var rdos = elements.Descendants("Field").Where(p => p.Attribute("TextControlID").Value.Substring(0, 3) == "rbl");
foreach (var item in rdos){
%>
#region 绑定<%=item.Value%>
//TODO:请绑定单选框组<%=item.Value%>
//ExtControlHelper.BindRadioGroup(this, _db.SelectGeneralFromTableINFO(ShopID, CurrentFormID,
//"<%=item.Attribute("AttributeTypeCode")==null?item.Attribute("TextControlID").Value.Substring(3):item.Attribute("AttributeTypeCode").Value %>").ToList()
//, "<%=item.Attribute("TextControlID").Value %>", "AttributeValue", "AttributeID", "CheckValue",true,4);
#endregion
<% }%>
#endregion
<%} %>
}
GC.Collect();
}

//保存
protected void btnSave_Click(object sender, DirectEventArgs e)
{
try
{
//显示保存进度条
X.Msg.Show(new MessageBoxConfig
{
Message = "正在保存数据, 请稍后...",
ProgressText = "正在保存数据...",
Width = 300,
Wait = true,
WaitConfig = new WaitConfig { Interval = 200 },
IconCls = "ext-mb-download",
AnimEl = this.btnSave.ClientID
});
if (Save())
{
//执行流程驱动
ResourceManager1.SetSubmitScript(ShopID, false);
}
}
catch (Exception ex)
{
NBShopCommon.LogManager.WriteErrorLog(ex);
ResourceManager1.AddScript(" setTimeout(function () { Ext.MessageBox.hide(); Ext.Msg.notify('完成', '保存失败!'); }, 1000);");
}

}
//保存数据
private bool Save()
{
//实例化LINQ To SQl类上下文对象
NBShopDataContext _db = new NBShopDataContext();
try
{
if (_db.Connection.State == ConnectionState.Closed)
_db.Connection.Open();
//事务开始
_db.Transaction = _db.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable);
//TODO:保存数据

//提交事务
_db.Transaction.Commit();

//ObjectService _os = new ObjectService();
//bool _bobjprc = _os.SaveObjectProcessInfo(Request.QueryString["ObjectID"] ?? string.Empty, Request.QueryString["PTCode"] ?? string.Empty);
//bool _bobjnp = _os.SaveObjectPN(Request.QueryString["ObjectID"] ?? string.Empty, Request.QueryString["PhasesId"] ?? string.Empty);
return true;
}
catch (Exception ex)
{
//回滚事务
_db.Transaction.Rollback();
LogManager.WriteErrorLog(ex);
ResourceManager1.AddScript(" setTimeout(function () { Ext.MessageBox.hide(); Ext.Msg.notify('完成', '保存数据失败!');}, 3000);");
return false;
}
}
//提交
protected void btnSubmit_Click(object sender, DirectEventArgs e)
{
try
{
//显示提交进度条
X.Msg.Show(new MessageBoxConfig
{
Message = "正在提交数据, 请稍后...",
ProgressText = "正在提交数据...",
Width = 300,
Wait = true,
WaitConfig = new WaitConfig { Interval = 200 },
IconCls = "ext-mb-download",
AnimEl = this.btnSumbit2.ClientID
});
if (Save())
{
//流程操作并执行脚本
ResourceManager1.SetSubmitScript(ShopID, true);
}
}
catch (Exception ex)
{
LogManager.WriteErrorLog(ex);
ResourceManager1.AddScript(" setTimeout(function () { Ext.MessageBox.hide();Ext.Msg.notify('完成', '提交失败!'); }, 2000);");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐