仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 733|回复: 10
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之CMS模板引擎:XHtmlAction仓酷云

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
效率会有不少的变化。而实际上net网页编程是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。
媒介:

先说说年夜伙体贴的事情上的事,在上家公司任了一个多月的手艺司理后,和公司中断了互助干系。
次要缘故原由在于一入手下手的报酬没谈的太分明:
1:没有条约,没有公积金,连社保也没交。
2:人为的30%酿成了绩效(对我还实施惯例,按季度或按项目发,并且绩效只要定期完成(发)与没完成(不发))
3:税后的成绩,要本人往弄发票来填。
只能说缘来的太快,份走的也太快。

关于事情上的事,一个多月的工夫,从需求文档到提要文档到具体文档,到产物原型到体系架构,基础上已走完了。
项目成员也雇用完成,开辟的按我的企图不乱的举行着,一切的手艺难点,我都提早办理了。
固然人走,但后续剩下点的义务也布置好了,剩下的开辟有种没了我仍然统统如旧的凄凉感到。

交代完前事,上面进进手艺正题。
1:ASP.NET的模板引擎(也称视图引擎):ASPX和Razor复杂先容

如图有两种视图引擎:



微软视图引擎的基础道理:

加载模板(aspx、cshtml)-》挪用引擎剖析成(语法树)-》天生CS代码-》静态编绎-》前往终极模板。

绝对来讲,这类模板引擎,功能绝对来讲会下落一些,可是搭载VSIED的智能提醒,和年夜伙多年的开辟习气,已占有了支流。

关于Razor有乐趣研讨的,想深切的能够下载源码往渐渐渐渐研讨,Razor的源码(取自mvc5源码的razor项目):点击下载
这里也有篇Razor的道理基本文章,可供参考:http://www.ckuyun.com/JamesLi2015/p/3213642.html
源码目次截图:

2:CYQ.Data模板引擎:XHtmlAction:

XHtmlAction模板引擎的基础道理:

和ASP.NET自带的模板引擎对照,这里没有语法树、天生代码和静态编绎历程,因而能够失掉高功能的体验。
别的绝对来讲,对Xml及XPath语法的操纵举行了封装,简化了良多背景开辟代码。
固然绝对弱点就是不克不及在模板里夹杂写背景代码了,换个说法是没有壮大的IDE智能提醒(若换个角度看,同样成长处,模板和背景代码真正分别了)。
XHtmlAction完成也相称的轻量级,一共就6个文件,老小咸宜,有乐趣研讨的能够看CYQ.DataV4.55的源码:

已经也写过两篇相干的文章:
1:多言语的(MutilLanguage),可让你很轻松的编写多言语网站:实战篇-复杂多言语的完成
2:XHmlAction的利用(之前类名叫XmlHelper,用法是一样的):CYQ.Data.XmlXmlHelper助你更便利快速的操纵Xml/Html

除先容的(XmlHelper)用法,比来V5版本增添了“CMS标签交换”功效,上面先容。

3:XHtmlActionCMS标签交换功效先容:

3.1这里用CYQ.Data的文本数据库来演示:

先写个函数,创立文本数据库和增加数据:
//创立文件数据库,并增加50条数据。
voidTxtDBCreate()
{
MDataTable.CreateSchema("demo.txt",false,newstring[]{"Name","CreateTime"},newSqlDbType[]{SqlDbType.NVarChar,SqlDbType.DateTime});
using(MActionaction=newMAction("demo"))
{
for(inti=0;i<50;i++)
{
action.Set("Name","Name_"+i.ToString());
action.Set("CreateTime",DateTime.Now.AddSeconds(i));
action.Insert();
}
}
}该代码实行后,天生两个文件:demo.ts(表布局)demo.txt(json格局的表数据)

文本里的Json数据:

文本数据库相称于创立好了,设置里增加一行数据库链接哀求:
<connectionStrings>
<addname="Conn"connectionString="txtpath={0}"/>
</connectionStrings>3.2项目示例代码:

弄好数据库,能够写代码了,单条数据的标签交换:
protectedvoidPage_Load(objectsender,EventArgse)
{

using(XHtmlActionxml=newXHtmlAction(true))
{
xml.Load(Server.MapPath("demo.html"));//加载html模板。
using(MActionaction=newMAction("demo"))//数据库操纵,操纵demo表。
{
if(action.Fill(1))//查询id=1的数据
{
xml.LoadData(action.Data,"txt");//将查询的数据行赋给XHtmlAction,并指定CMS前缀
}
//xml.LoadData(action.Select());
//xml.SetForeach("divFor",SetType.InnerXml);
}
Response.Write(xml.OutXml);//输入模板
}
}代码解答:
代码的关头就在于办法:LoadData(MDataRow,autoSetValuePre)
只需把数据行赋给模板,加一个恣意前缀,以后就能够在html中恣意利用:{$txt#Name}或{$txt-CreateTime}或{$txt#ID}来代表数据的值。
#,-是默许的前缀分开标记,恣意利用其一都可。
{$字段名}这个是由于年夜多半的模板引擎都接纳这类,故接纳这类通用体例。
下面的代码中,有两行是正文的,是多行数据的(表轮回),办法是:LoadData(MDataTable);假如把下面的代码正文摊开,Html以下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$txt#Name}</title>
</head>
<body>
<divtitle="单条数据">
单条数据:{$txt#Name}-{$txt-CreateTime}
</div>
<hr/>
<divid="divFor"title="多条数据">
{$Name}-{$CreateTime}<br/>
</div>
</body></html>最后的效果输入以下图:



本Demo源码下载:点击下载

4:XHtmlAction关头点

1:字段前缀:

关于一个html,大概触及到不异的字段名(同表的分歧行数据,分歧表的数据)必要标签交换,因而LoadData(数据行,前缀)办法必要前缀来辨别。
同时前缀也能够传空"",不利用前缀(但要正文制止和别的的抵触)。
关于行的数据,是在猎取xml.OutXml属性的时分才处置,由于关于标签,能够存在恣意中央,因而不克不及以节点来处置,只能在终极输的时分,拿到html,再用正则交换。

2:表格输入:

关于表格的输入,必要猎取某个节点,以对节点下的内容,举行克隆复制轮回输入,因为已存在节点,以是在xml.SetForeach的时分就处置了。
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高net网页编程的运行效率。只是将net网页编程源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。
山那边是海 该用户已被删除
沙发
发表于 2015-1-20 18:22:40 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
再现理想 该用户已被删除
板凳
发表于 2015-1-29 14:15:10 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-2 11:13:30 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
分手快乐 该用户已被删除
5#
发表于 2015-2-7 18:36:39 | 只看该作者
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
柔情似水 该用户已被删除
6#
发表于 2015-2-14 23:06:51 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
变相怪杰 该用户已被删除
7#
发表于 2015-2-19 21:06:41 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
深爱那片海 该用户已被删除
8#
发表于 2015-3-1 12:59:11 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
再见西城 该用户已被删除
9#
发表于 2015-3-10 07:28:53 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
admin 该用户已被删除
10#
发表于 2015-3-17 05:10:03 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
活着的死人 该用户已被删除
11#
发表于 2015-3-23 21:02:58 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 09:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表