摘要: Field的意思是字段,我们在展示一条数据的时候总是要展示具体的某些字段,有时候是一条数据,有时候是个循环。 一条数据的时候很好处理,我们把数据准备好,然后替换相关的[field]标签就行了。当循环输出的时候,其实只需要调用显示一条数据的方法就行了。 Field的标签格式大概是这样:[field:PostTime length=10 dateFormat="yyyy-MM-dd HH:mm"/] 可以看出,Field也有自己的一些属性,就像一个Label一样。 我们在展示Field的时候有时不可能完全按照数据库的字段名来展示,比如 发布时间PostTime字段,我们可能需要 阅读全文
posted @ 2011-03-24 14:19 君之蘭 阅读(2325) 评论(13) 推荐(6) 编辑
摘要: 话说上节听的很郁闷,讲的也郁闷,整个系列没有详细的Code,所以都有点懵。其实仔细看之前的几节应该还是能够理解整个思路的。 我在这里再整理一遍: 用户访问URL后 ->根据所有Page的URL规则(urlpattern)获取当前Page,然后再根据page的Template,Find出所有的Label(通过反射),然后遍历这些Label,把得到的数据的Html替换掉Label本身的标签代码。最后整个Template就是要生成的HTML了。 所以我们要明白Label是如何获取工作才能获取数据库的数据的。一个Label可以理解成一个控件,那么控件必然会支持一些属性(Parameter)和一些 阅读全文
posted @ 2010-11-14 19:58 君之蘭 阅读(3710) 评论(14) 推荐(4) 编辑
摘要: 紧接上回,说到Parameter和Field了。 在Label初始化的时候,同时也要对ParameterCollection和FiledCollection初始化。在上节有个属性是这样写的ArticleId=Url(articleid),意思是ArticleId 的值是url的query里的articleid的参数的值。而且还有个 DateFormat="yyyy年MM月dd日"。所以可以看出Parameter的多样化,我个人认为Parameter是最难设计的!以至于我现在写博文都心虚,我之前的系统里对Parameter处理的也比较糟糕,有不少hardcode。 我们说下P 阅读全文
posted @ 2010-11-11 23:50 君之蘭 阅读(3911) 评论(8) 推荐(1) 编辑
摘要: 上节讲了页面的整个生产流程,大家都期待第三篇,也就是生产的核心内容——Label的替换。说实话,我很有压力啊:)一个人一个实现思路,所以...可能你不能接受。 我的标签分为2种,一种是配置变量标签(就是站点和系统的Config),用 %变量名%表示,在初始化Labels之前是要执行替换的。另外一种就是数据调用的Label咯。看下风格://简单的循环列表{Article:List Top="10" CategoryId="5"} <a href ="/details/[field:FileName/]" target=" 阅读全文
posted @ 2010-11-10 17:54 君之蘭 阅读(4563) 评论(12) 推荐(9) 编辑
摘要: 上节我们介绍了下基本的几个类。下面我们来讲下本CMS系统的运行机制。 一个Url请求过来,我们的CMS系统就要对URL进行分析,知道其Domain属于哪个Site,Url符合哪个Page的访问规则,然后再把Page的Template里的Label进行行替换。 如何拦截Url请求呢? 那就是HttpModule。 自定义一个CMSHttpModule:IHttpModule,在config里增加Ht... 阅读全文
posted @ 2010-11-09 16:17 君之蘭 阅读(6141) 评论(17) 推荐(8) 编辑
摘要: 写博文写教程性质的内容,大家比较喜欢,具体的项目设计方案关注的人比较少,而且思路也不一定说的清楚,本身写博文就比较辛苦,作者再偷点懒,那基本上就是一篇废文。尽管如此,我还是想写一下我做过的一个项目的模块设计——CMS的模版引擎。呵呵,叫成“引擎”就是夺人眼球而已。其实就是一个标签解释的过程模块。 做过网站的朋友都对CMS很熟悉,有的朋友也接触过N多CMS系统,国内比较流行的有dedeCMS,phpCMS,帝国CMS,KingCMS,PowerEasyCMS等等,他们都有个共同的特点,就是前台的实现是模版标签机制。标签的好处就是可以让非专业开发人员通过特定的标签实现数据调用。一段标签表示一种数. 阅读全文
posted @ 2010-11-09 12:02 君之蘭 阅读(7828) 评论(19) 推荐(15) 编辑
摘要: 很久没写了,抱歉,呵呵。上节我们主要讲了Click的流程,这次主要来看HTML输出。 假如让你写一个Button控件类,你如何设计这个类?他应该包含什么内容? OK!此类必须有个输出HTML的方法对吧?Render,还需要所包含的TagName、Value、Id、Name、Type、Class等等我们能想到的的<input>的属性。这些具体的属性在类里设计成属性就行了,还有一些自定义的属性,所以还需要一个AddAttribute方法。那么我们写一下大致的雏形。Code highlighting produced by Actipro CodeHighlighter (freewar 阅读全文
posted @ 2010-11-08 23:15 君之蘭 阅读(3019) 评论(3) 推荐(8) 编辑
摘要: “做.NET不值钱,没有技术含量,拖拖控件就行了。”———— 这类言语我最讨厌了,一点技术含量都没有,不懂.NET就瞎嚷嚷。不管做什么,做好都不容易,你没做过怎么知道没有技术含量呢? 我们既享受控件带来的快捷,也知其原理,甚至可以自己开发控件,你还能说我们没技术含量?! 控件是什么? 是.NET Framework对Html里... 阅读全文
posted @ 2010-10-15 11:46 君之蘭 阅读(5108) 评论(21) 推荐(9) 编辑
摘要: 我们都知道网易、搜狐等大型门户都有“通行证”的概念,这个通行证系统就是今天讨论的“单点登录系统”。其主要特征是多个站点一个用户中心,一点登陆后其他也自动登录,注销也是。比如我们在126登录了邮箱,再去163.com就是登陆状态。我这里的实现方案是传统的cookie方案。希望此文对需要的朋友有用,也希望不足之处大家能够提出。SSO的基本功能:·... 阅读全文
posted @ 2010-10-12 15:04 君之蘭 阅读(7165) 评论(12) 推荐(7) 编辑
摘要: 其实看到这个标题,我想一些人应该知道我们要谈论.cs类的实际应用。以前我是ASP程序员,那时候用VBS脚本编程,如果要使用其他方法(比如公共的方法)就得include一些function.asp,就像js的运行一样也要先引用其他的js函数。 所以,转到ASP.NET后,我也没在意类这个东西,也不清楚静态和非静态的区别,反正就是实例化后就可以调用其方法就行了,而aspx.cs里面都是写方法的,就是一... 阅读全文
posted @ 2010-09-30 11:33 君之蘭 阅读(1941) 评论(3) 推荐(1) 编辑
摘要: 昨天有同学在群里问MVC怎么让后台调用前台的js方法,我给他讲了半天他还是没能理解,我很晕。调用Javascript 不管是论坛还是QQ群里,很多同学都会问一个问题,就是他的后台程序怎么调用前台JS的方法。问这个问题其实不奇怪,奇怪的是很多同学没想到的一点就是B/S到底是怎么工作的?知道工作方式我们还能不会“调用”吗? B/S:Browser / Server,即̶... 阅读全文
posted @ 2010-09-09 09:43 君之蘭 阅读(2324) 评论(3) 推荐(1) 编辑
摘要: 说明:本文里会使用InputId为控件的ID,InputName控件的name,InputId.Text控件的值,UrlPramaName Url参数名,BindForm()绑定表单的方法。以后还会使用一些伪代码,和这种“未声明”的代码。尽量单词达意。 Request.Form 可能有同学会问为什么你用Request.Form["InputName"]啊,我们都是用Inpu... 阅读全文
posted @ 2010-09-07 14:55 君之蘭 阅读(2111) 评论(7) 推荐(2) 编辑
摘要: form是什么?<form>标签是HTML里最重要的标签之一,是我们最常用的标签之一。但是,我想说,在很多初级.net程序员脑海里,他就是一个承载控件的母体,至于他的作用是什么可能都不清楚。form是一个表单,用来向服务器post数据。传统的web开发(没有控件概念的开发),form标签的写法是<form id="form1" action="" method="post">... 阅读全文
posted @ 2010-09-06 13:49 君之蘭 阅读(3860) 评论(4) 推荐(3) 编辑
摘要: 前言头两天去面试了,开头的一个问题是“请用五句话介绍下你自己!主要是介绍自己技术方面。“ 我当时脑袋立刻懵了-_-,糊里糊涂的乱说一通。面试官他讲:”要想做一名架构师,首先脑子要保持清醒且有条理!” 的确,我从来没写过一篇像样的博文,语言组织混乱,要想做到架构师这一步,博客是很好的锻炼平台,既能锻炼和巩固自己,也能帮助他人。何乐而不为呢?所以我想试着... 阅读全文
posted @ 2010-09-06 10:41 君之蘭 阅读(1253) 评论(8) 推荐(2) 编辑
摘要: 功能比较简单,对自定义类型、List、Array实现了序列化其中包含了(反射创建数组、反射创建泛型、反射填充泛型内容、反射填充数组内容) 其实我写这段话就是为了让你来的。测试代码:[代码]运行结果: 阅读全文
posted @ 2010-08-05 09:18 君之蘭 阅读(884) 评论(0) 推荐(0) 编辑