从您的数据库直接生成 ASP.NET+AJAX Web 应用程序





5.00/5 (1投票)
使用 Code OnTime Generator 生成令人惊艳的 ASP.NET+AJAX Web 应用程序,具有自适应筛选、会员管理、以及 Excel、CSV、RSS、PDF 格式的导出和报表功能。支持 IE 7-8、Safari、Opera、FireFox、Chrome。立即试用!
我们很高兴与大家分享这款免费的 ASP.NET 代码生成器,它可以直接从数据库生成令人惊艳的 ASP.NET+AJAX Web 应用程序。
生成的应用程序具有现代 Web 2.0 用户界面、高级多级菜单、基于 Microsoft ASP.NET Membership 构建的安全系统、复杂的 master-detail 页面布局、高效的大型数据集筛选、分页和排序、CSV、Excel 和 RSS 格式的数据导出、即时 PDF、Excel 和 TIFF 报表。应用程序代码库依赖于 Microsoft ASP.NET Ajax Extensions 和 Ajax Control Toolkit。报表使用免费的 Microsoft Report Viewer 生成。
生成的应用程序在主要的浏览器中(包括 Internet Explorer 7-8、Firefox、Safari、Chrome 和 Opera)运行效果相同。
生成的应用程序的整个源代码都包含在内,没有任何外部依赖。您还会发现所有代码生成器模板都以源代码的形式存在。应用程序代码是用 Visual Basic.NET 或 C# 生成的。
请按照以下说明安装 ASP.NET 代码生成器和代码生成项目
- 在 http://codeontime.com 或直接从 http://store.codeontime.com/install/setup.exe 下载免费的代码生成器。
- 运行安装程序并安装代码生成器。
- 启动代码生成器并单击“安装”按钮以安装代码生成库。代码生成库包含 XSLT 样式表、JavaScript 文件、CSS 和图形资源集合。等待安装完成。
- 在可用代码生成项目的菜单中选择免费代码生成项目 Web Site Builder(网站生成器)。 按照说明配置数据库连接并完成项目向导的所有步骤。最终结果将类似于下面的应用程序。
您可以在 http://blog.codeontime.com/2009/11/web-site-factory-preview-3.html 找到生成的应用程序的在线演示。
这款工具将使任何对学习、原型设计和实现 ASP.NET 的 AJAX 应用程序感兴趣的人受益匪浅。如果您是数据库管理员,那么您可以在几分钟内为您的数据库创建一个有吸引力且易于使用的应用程序。生成的应用程序可以作为任何新项目的良好基础。
以下标记代表图片中的代码。
<%@ Page Language="C#"
MasterPageFile="~/Main.master" AutoEventWireup="true"
CodeFile="Employees.aspx.cs"
Inherits="Pages_Employees" Title="Employees" %>
<asp:Content ID="Content1"
ContentPlaceHolderID="PageHeaderContentPlaceHolder"
runat="Server">
Employees</asp:Content>
<asp:Content ID="Content2"
ContentPlaceHolderID="PageContentPlaceHolder" runat="Server">
<div factory:flow="NewRow" xmlns:factory="urn:codeontime:app-
factory">
<div factory:activator="Tab|Employees">
<div id="view1" runat="server">
</div>
<aquarium:DataViewExtender id="view1Extender" runat="server"
TargetControlID="view1"
Controller="Employees" view="grid1" ShowInSummary="True"
/>
</div>
<div factory:activator="Tab|Employees">
<div id="view2" runat="server">
</div>
<aquarium:DataViewExtender id="view2Extender" runat="server"
TargetControlID="view2"
Controller="Employees" view="grid1"
FilterSource="view1Extender"
FilterFields="ReportsTo" />
</div>
<div factory:activator="Tab|Orders">
<div id="view3" runat="server">
</div>
<aquarium:DataViewExtender id="view3Extender" runat="server"
TargetControlID="view3"
Controller="Orders" view="grid1"
FilterSource="view1Extender" FilterFields="EmployeeID" />
</div>
<div factory:activator="Tab|Employee Territories">
<div id="view4" runat="server">
</div>
<aquarium:DataViewExtender id="view4Extender" runat="server"
TargetControlID="view4"
Controller="EmployeeTerritories" view="grid1"
FilterSource="view1Extender"
FilterFields="EmployeeID" />
</div>
</div>
</asp:Content>
<asp:Content ID="Content3"
ContentPlaceHolderID="SideBarPlaceHolder" runat="Server">
<div class="TaskBox">
<div class="Inner">
<div class="Header">
About</div>
<div class="Value">
This page allows employees management.</div>
</div>
</div>
</asp:Content>
同一组代码生成模板生成 C# 和 VB.NET 中的等效应用程序。
这是一个代码生成模板的示例,它创建了生成应用程序的基础中的应用程序框架的一个文件。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.codeontime.com/2008/codedom-compiler"
xmlns:a="urn:schemas-codeontime-com:data-aquarium-project"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-
prefixes="msxsl a"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<compileUnit namespace="{a:project/a:namespace}.Data">
<imports>
<namespaceImport name="System"/>
<namespaceImport name="System.Collections.Generic"/>
<namespaceImport name="System.ComponentModel"/>
<namespaceImport name="System.Data"/>
<namespaceImport name="System.Data.Common"/>
<namespaceImport name="System.Linq"/>
<namespaceImport name="System.Text"/>
<namespaceImport name="System.Text.RegularExpressions"/>
<namespaceImport name="System.Xml"/>
<namespaceImport name="System.Xml.XPath"/>
<namespaceImport name="System.Web"/>
<namespaceImport name="System.Web.Caching"/>
<namespaceImport name="System.Web.Configuration"/>
<namespaceImport name="System.Web.Security"/>
</imports>
<types>
<!-- class View -->
<typeDeclaration name="View">
<members>
<!-- property Id -->
<memberField type="System.String" name="id"/>
<memberProperty type="System.String" name="Id">
<attributes public="true" final="true"/>
<getStatements>
<methodReturnStatement>
<fieldReferenceExpression name="id"/>
</methodReturnStatement>
</getStatements>
</memberProperty>
<!-- property Label -->
<memberField type="System.String" name="label"/>
<memberProperty type="System.String" name="Label">
<attributes public="true" final="true"/>
<getStatements>
<methodReturnStatement>
<fieldReferenceExpression name="label"/>
</methodReturnStatement>
</getStatements>
</memberProperty>
<!-- property HeaderText -->
<memberField type="System.String" name="headerText"/>
<memberProperty type="System.String" name="HeaderText">
<attributes public="true" final="true"/>
<getStatements>
<methodReturnStatement>
<fieldReferenceExpression name="headerText"/>
</methodReturnStatement>
</getStatements>
</memberProperty>
<!-- property Type -->
<memberField type="System.String" name="type"/>
<memberProperty type="System.String" name="Type">
<attributes public="true" final="true"/>
<getStatements>
<methodReturnStatement>
<fieldReferenceExpression name="type"/>
</methodReturnStatement>
</getStatements>
</memberProperty>
<!-- constructor View() -->
<constructor>
<attributes public="true"/>
</constructor>
<!-- constructor View(XPathNavigator, IXmlNamespaceResolver -->
<constructor>
<attributes public="true"/>
<parameters>
<parameter type="XPathNavigator" name="view"/>
<parameter type="IXmlNamespaceResolver" name="resolver"/>
</parameters>
<statements>
<assignStatement>
<fieldReferenceExpression name="id">
<thisReferenceExpression/>
</fieldReferenceExpression>
<castExpression targetType="System.String">
<methodInvokeExpression methodName="Evaluate">
<target>
<argumentReferenceExpression name="view"/>
</target>
<parameters>
<primitiveExpression value="string(@id)"/>
</parameters>
</methodInvokeExpression>
</castExpression>
</assignStatement>
<assignStatement>
<fieldReferenceExpression name="type">
<thisReferenceExpression/>
</fieldReferenceExpression>
<castExpression targetType="System.String">
<methodInvokeExpression methodName="Evaluate">
<target>
<argumentReferenceExpression name="view"/>
</target>
<parameters>
<primitiveExpression value="string(@type)"/>
</parameters>
</methodInvokeExpression>
</castExpression>
</assignStatement>
<assignStatement>
<fieldReferenceExpression name="label">
<thisReferenceExpression/>
</fieldReferenceExpression>
<castExpression targetType="System.String">
<methodInvokeExpression methodName="Evaluate">
<target>
<argumentReferenceExpression name="view"/>
</target>
<parameters>
<primitiveExpression value="string(@label)"/>
</parameters>
</methodInvokeExpression>
</castExpression>
</assignStatement>
<assignStatement>
<fieldReferenceExpression name="headerText">
<thisReferenceExpression/>
</fieldReferenceExpression>
<castExpression targetType="System.String">
<methodInvokeExpression methodName="Evaluate">
<target>
<argumentReferenceExpression name="view"/>
</target>
<parameters>
<primitiveExpression value="string(c:headerText)"/>
<argumentReferenceExpression name="resolver"/>
</parameters>
</methodInvokeExpression>
</castExpression>
</assignStatement>
</statements>
</constructor>
</members>
</typeDeclaration>
</types>
</compileUnit>
</xsl:template>
</xsl:stylesheet>
代码生成器长期以来因生成的应用程序的质量而饱受诟病——不再如此。使用免费的 Code OnTime Generator 和 Web Site Builder,并证明那些仍然持怀疑态度的人是错误的。
请尽情享受。