<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_疯狂秀才QQ:1055818239</title><subtitle type="text">jQuery.Easy-UI QQ讨论群：36534121(超级)、 112044258(Full)、88504640、32994605、56271061</subtitle><id>http://feed.cnblogs.com/blog/u/17903/rss</id><updated>2012-01-11T06:17:05Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/17903/rss"/><entry><id>http://www.cnblogs.com/hxling/archive/2012/01/11/2319219.html</id><title type="text">介绍几款在线代码编辑器</title><summary type="text">我们在做系统的时候，经常会碰到需要编辑模板的功能，也就是也编辑HTML，js 的代码，用TEXTAREA也可以实现，但不是很友好，下面就介绍几款插件一、EditArea Site:http://www.cdolivet.com/editarea/?page=editArea 效果图： 下载地址|Demo 演示二、eCoder 效果图： 下载地址</summary><published>2012-01-11T06:17:00Z</published><updated>2012-01-11T06:17:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2012/01/11/2319219.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2012/01/11/2319219.html"/><content type="html">&lt;p&gt;我们在做系统的时候，经常会碰到需要编辑模板的功能，也就是也编辑HTML，js 的代码，用TEXTAREA也可以实现，但不是很友好，下面就介绍几款插件&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;一、EditArea&amp;nbsp; &lt;span style="font-size: 14px;"&gt;Site:&lt;a href="http://www.cdolivet.com/editarea/?page=editArea" target="_blank"&gt;http://www.cdolivet.com/editarea/?page=editArea&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;效果图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/14345/2012011114094766.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: #0000ff;"&gt;&lt;a href="http://sourceforge.net/projects/editarea/" target="_blank"&gt;&lt;span style="color: #0000ff;"&gt;下载地址&lt;/span&gt;&lt;/a&gt;|&lt;a href="http://www.cdolivet.com/editarea/editarea/exemples/exemple_full.html" target="_blank"&gt;&lt;span style="color: #0000ff;"&gt;Demo 演示&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;二、&lt;a href="http://ecoder.gmeditor.com/"&gt;eCoder&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;效果图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/14345/2012011114151253.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://ecoder.quintalinda.com/" target="_blank"&gt;下载地址&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2319219.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2012/01/11/2319219.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2012/01/09/2316871.html</id><title type="text">我的Discuz!X2 、Ucenter 1.6、ASP.NET 应用程序整合经历</title><summary type="text">对于ASP.NET 程序员来说，去整合PHP的应用实在有点别扭，但那也没有办法，即然是做程序的这些是避免不了的，既然免不了，那就上吧第一步：准备相关程序 1、下载DISCUZ X2 的程序 2、在windows 2003 中配置PHP环境 3、安装DISCUZ X2程序 ，选择全新安装（包括UCENTER 1.6） 4、下载 Ucenter 的.NET 版本的API . (http://ucenterapidotnet.codeplex.com/) 此应用程序是一位大侠修改的.NET 4.0。在此表示感谢。在他的博客中的有介绍ucenter 的一些通信原理，有兴趣的朋友可以去逛逛...</summary><published>2012-01-09T02:51:00Z</published><updated>2012-01-09T02:51:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2012/01/09/2316871.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2012/01/09/2316871.html"/><content type="html">&lt;p&gt;对于ASP.NET 程序员来说，去整合PHP的应用实在有点别扭，但那也没有办法，即然是做程序的这些是避免不了的，既然免不了，那就上吧&lt;/p&gt;&#xD;
&lt;p&gt;第一步：准备相关程序&lt;/p&gt;&#xD;
&lt;p&gt;1、下载DISCUZ X2 的程序&lt;/p&gt;&#xD;
&lt;p&gt;2、在windows 2003 中配置PHP环境&lt;/p&gt;&#xD;
&lt;p&gt;3、安装DISCUZ X2程序 ，选择全新安装（包括UCENTER 1.6）&lt;/p&gt;&#xD;
&lt;p&gt;4、下载 Ucenter 的.NET 版本的API . (&lt;a style="text-decoration: underline; outline-style: none; color: #206ba4; font-family: 'Microsoft YaHei','Segoe UI',Calibri,'Myriad Pro',Myriad,'Trebuchet MS',Helvetica,Arial,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;" href="http://ucenterapidotnet.codeplex.com/"&gt;http://ucenterapidotnet.codeplex.com/&lt;/a&gt;)&lt;/p&gt;&#xD;
&lt;p&gt;此应用程序是一位大侠修改的.NET 4.0。在此表示感谢。在他的博客中的有介绍ucenter 的一些通信原理，有兴趣的朋友可以去逛逛：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.dozer.cc/2011/01/ucenter-api-in-depth-1st/"&gt;http://www.dozer.cc/2011/01/ucenter-api-in-depth-1st/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;5、如果你的.net程序运行在4.0环境下，下载下来的源码中有个地方需要修改下。&lt;/p&gt;&#xD;
&lt;p&gt;ucapibase.cs 中 使用P3P协议的地方，源码如下：&lt;/p&gt;&#xD;
&lt;p&gt;Response.Headers.Add("P3P", 修改为：&lt;/p&gt;&#xD;
&lt;p&gt;Response.AppendHeader("P3P",&lt;/p&gt;&#xD;
&lt;p&gt;第二步：参考这里吧，我就不码字啦 &lt;a href="http://www.cnblogs.com/CoreCaiNiao/archive/2011/08/25/2153434.html"&gt;http://www.cnblogs.com/CoreCaiNiao/archive/2011/08/25/2153434.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果以上通信成功啦！那么恭喜你，你已经完成了一半啦&lt;/p&gt;&#xD;
&lt;p&gt;到这里问题就出来啦，在www站点可以登录和退出，且和X2也同步登录和退出啦，但是X2的登录和退出根本不会同步WWW的登录和退出，经过一系统的监控手段发现。在X2中登录和退出均不调用应用管理中设置的API（即UC.PHP）,我也不懂PHP代码，百思不得其解之下请出了百度大神，我搜啊搜啊终于找到了一个解决此问题的（非常规手段）&lt;a href="http://www.discuzt.com/forum.php?mod=forumdisplay&amp;amp;fid=3&amp;amp;filter=sortid&amp;amp;sortid=10&amp;amp;searchsort=1&amp;amp;bate=7&amp;amp;typeid=18"&gt;原文链接&lt;/a&gt; ，看下图吧&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/14345/2012010910434676.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意，在更新缓存时，不是UCENTER中的更新缓存，是工具的 如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/14345/2012010910450621.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;更新完缓存后，在进入X2论坛中进行登录和退出，居然会同步啦。如果是低版本的Ucenter 可能不会出现这个问题,这个我没有去测试&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;关于修改密同步的问题，我是这样解决的&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在X2中修改的密码只能在X2中登录有效，当在主站修改了密码后，在主站登录时更新X2中的密码，然后在做同步登录。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;记录一下，希望本文对你有用&lt;/p&gt;&#xD;
&lt;p&gt;在些感谢 &lt;a href="http://www.dozer.cc"&gt;dozer、&lt;/a&gt;&lt;a style="margin: 0px; padding: 0px; text-decoration: none; color: #000000; font-family: verdana,arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;" href="http://home.cnblogs.com/u/CoreCaiNiao/"&gt;活跃的毛虫&lt;/a&gt; 非常精彩的文章&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2316871.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2012/01/09/2316871.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2011/12/30/2307739.html</id><title type="text">2011年最后一博：仿HAO123的邮箱登录</title><summary type="text">各门户邮箱的数据来自于HAO123 很简单没啥内涵，纯属发上来作个记号，废话不多说了上代码：引入jQuery 是必须的html:&amp;lt;script src=&amp;quot;http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&amp;quot;mail.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt</summary><published>2011-12-30T09:08:00Z</published><updated>2011-12-30T09:08:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2011/12/30/2307739.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2011/12/30/2307739.html"/><content type="html">&lt;p&gt;各门户邮箱的数据来自于HAO123 很简单没啥内涵，纯属发上来作个记号，废话不多说了上代码：&lt;/p&gt;&#xD;
&lt;p&gt;引入jQuery 是必须的&lt;/p&gt;&#xD;
&lt;p&gt;html:&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"  type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&#xD;
  &amp;lt;script src="mail.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&#xD;
&amp;lt;form id="mailForm"  method=post&amp;gt;&#xD;
    &amp;lt;span style="float:left" id="date_now"&amp;gt;&amp;lt;/span&amp;gt;&#xD;
    &amp;lt;span style="padding-left:20px;"&amp;gt;&#xD;
	邮箱用户：&amp;lt;input type="text" style="width:120px;" id="mailUserName"  /&amp;gt; &#xD;
	密码：&amp;lt;input style="width:100px;" id="mailPassword" type="password" /&amp;gt;&#xD;
    &amp;lt;select name="mailSelect"  id="mailSelect" style="BORDER-RIGHT: #ffffff 0px groove; BORDER-TOP: #ffffff 0px groove; FONT-SIZE: 12px; BORDER-LEFT: #ffffff 0px groove; BORDER-BOTTOM: #333333 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffffff"&amp;gt;&#xD;
    &#xD;
	&amp;lt;select&amp;gt;&#xD;
	&amp;lt;span id="mailParas" style="display:none;"&amp;gt;&amp;lt;/span&amp;gt;&#xD;
      &amp;lt;input id="btnMailLogin" type="submit" value="登录"/&amp;gt;&#xD;
    &amp;lt;/span&amp;gt;&#xD;
  &amp;lt;/form&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;javascript:&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;var mail = {&#xD;
	mailData:[&#xD;
		{&#xD;
			mail: "163",&#xD;
			name: "@163.com",&#xD;
			action: "http://reg.163.com/CheckUser.jsp",&#xD;
			params: {&#xD;
				url: "http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&amp;amp;verifycookie=1&amp;amp;language=-1&amp;amp;from=web&amp;amp;df=webmail163",&#xD;
				username: "_username_",&#xD;
				password: "_password_"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "126",&#xD;
			name: "@126.com",&#xD;
			action: "https://reg.163.com/logins.jsp",&#xD;
			params: {&#xD;
				domain: "126.com",&#xD;
				username: "_username_@126.com",&#xD;
				password: "_password_",&#xD;
				url: "http://entry.mail.126.com/cgi/ntesdoor?lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "sina",&#xD;
			name: "@sina.com",&#xD;
			action: "http://mail.sina.com.cn/cgi-bin/login.cgi",&#xD;
			params: {&#xD;
				u: "_username_",&#xD;
				psw: "_password_"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "yahoocomcn",&#xD;
			name: "@yahoo.com.cn",&#xD;
			action: "https://edit.bjs.yahoo.com/config/login",&#xD;
			params: {&#xD;
				login: "_username_@yahoo.com.cn",&#xD;
				passwd: "_password_",&#xD;
				domainss: "yahoo",&#xD;
				".intl": "cn",&#xD;
				".src": "ym"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "yahoocn",&#xD;
			name: "@yahoo.cn",&#xD;
			action: "https://edit.bjs.yahoo.com/config/login",&#xD;
			params: {&#xD;
				login: "_username_@yahoo.cn",&#xD;
				passwd: "_password_",&#xD;
				domainss: "yahoocn",&#xD;
				".intl": "cn",&#xD;
				".done": "http://mail.cn.yahoo.com/inset.html"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "sohu",&#xD;
			name: "@sohu.com",&#xD;
			action: "http://passport.sohu.com/login.jsp",&#xD;
			params: {&#xD;
				loginid: "_username_@sohu.com",&#xD;
				passwd: "_password_",&#xD;
				fl: "1",&#xD;
				vr: "1|1",&#xD;
				appid: "1000",&#xD;
				ru: "http://login.mail.sohu.com/servlet/LoginServlet",&#xD;
				ct: "1173080990",&#xD;
				sg: "5082635c77272088ae7241ccdf7cf062"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "yeah",&#xD;
			name: "@yeah.net",&#xD;
			action: "https://reg.163.com/logins.jsp",&#xD;
			params: {&#xD;
				domain: "yeah.net",&#xD;
				username: "_username_@yeah.net",&#xD;
				password: "_password_",&#xD;
				url: "http://entry.mail.yeah.net/cgi/ntesdoor?lightweight%3D1%26verifycookie%3D1%26style%3D-1"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "139",&#xD;
			name: "@139.com",&#xD;
			action: "https://mail.10086.cn/Login/Login.ashx",&#xD;
			params: {&#xD;
				UserName: "_username_",&#xD;
				Password: "_password_",&#xD;
				clientid: "5015"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "tom",&#xD;
			name: "@tom.com",&#xD;
			action: "http://login.mail.tom.com/cgi/login",&#xD;
			params: {&#xD;
				user: "_username_",&#xD;
				pass: "_password_"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "21cn",&#xD;
			name: "@21cn.com",&#xD;
			action: "http://passport.21cn.com/maillogin.jsp",&#xD;
			params: {&#xD;
				UserName: "_username_@21cn.com",&#xD;
				passwd: "_password_",&#xD;
				domainname: "21cn.com"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "renren",&#xD;
			name: "\u4eba\u4eba\u7f51",&#xD;
			action: "http://passport.renren.com/PLogin.do",&#xD;
			params: {&#xD;
				email: "_username_",&#xD;
				password: "_password_",&#xD;
				origURL: "http://www.renren.com/Home.do",&#xD;
				domain: "renren.com"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "baidu",&#xD;
			name: "\u767b\u5f55\u767e\u5ea6",&#xD;
			action: "https://passport.baidu.com/?login",&#xD;
			params: {&#xD;
				u: "http://passport.baidu.com/center",&#xD;
				username: "_username_",&#xD;
				password: "_password_"&#xD;
			}&#xD;
		},&#xD;
		{&#xD;
			mail: "51",&#xD;
			name: "51.com",&#xD;
			action: "http://passport.51.com/login.5p",&#xD;
			params: {&#xD;
				passport_51_user: "_username_",&#xD;
				passport_51_password: "_password_",&#xD;
				gourl: "http%3A%2F%2Fmy.51.com%2Fwebim%2Findex.php"&#xD;
			}&#xD;
		}],&#xD;
	init:function(){&#xD;
		var $mailSelect = $('#mailSelect'); &#xD;
		var $mailUserName =$('#mailUserName');&#xD;
		var $mailPassword = $('#mailPassword');&#xD;
		var $mailParas = $('#mailParas');&#xD;
		var md = mail.mailData;&#xD;
		var p=[];&#xD;
		$mailSelect.empty(); //清空邮箱列表&#xD;
		for(var i=0;i&amp;lt;md.length;i++){&#xD;
			$mailSelect.append('&amp;lt;option value="'+md[i].mail+'"&amp;gt;'+md[i].name+'&amp;lt;/option&amp;gt;');&#xD;
		}&#xD;
		&#xD;
		$mailSelect.change(function(){&#xD;
			var mailName = $(this).val();&#xD;
			var m = mail.find(mailName,md);&#xD;
			if(m){&#xD;
				p = [];&#xD;
				for(var key in m.params){&#xD;
					p.push('&amp;lt;input type="hidden" name="'+ key+'" value="'+m.params[key].replace(/_username_/,$mailUserName.val()).replace(/_password_/,$mailPassword.val())+'" /&amp;gt;');&#xD;
				};&#xD;
				$mailParas.empty().html(p.join(''));&#xD;
				&#xD;
				$('#mailForm').attr('action',m.action);&#xD;
			}&#xD;
		}).change();&#xD;
		&#xD;
		$('#mailForm').bind('submit',function(){&#xD;
			return mail.check();&#xD;
		});&#xD;
	},&#xD;
	check:function(){&#xD;
		var $mailSelect = $('#mailSelect'); &#xD;
		var $mailUserName =$('#mailUserName');&#xD;
		var $mailPassword = $('#mailPassword');&#xD;
		if($mailUserName.val()==''){&#xD;
			alert('请输入您的邮箱登录名称！');&#xD;
			return false;&#xD;
		}else if($mailPassword.val()==''){&#xD;
			alert('请输入您的登录密码！');&#xD;
			return false;&#xD;
		}else{&#xD;
			$mailSelect.change();&#xD;
			$mailPassword.val('');&#xD;
			outWin=window.open('','','scrollbars=yes,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes');   &#xD;
			doc=outWin.document;   &#xD;
			doc.open('text/html');   &#xD;
			doc.write('&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&amp;gt;&amp;lt;title&amp;gt;邮箱登录&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body onload="document.tmpForm.submit()"&amp;gt;');   &#xD;
			doc.write('&amp;lt;p align="center" style="font-size: 14px; color: #FF0000"&amp;gt;正在登录系统，请稍候......&amp;lt;/p&amp;gt;&amp;lt;form name="tmpForm" action="'+$('#mailForm').attr('action')+'" method="post"&amp;gt;'+$('#mailParas').html()+'&amp;lt;/form&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;');   &#xD;
			doc.close();&#xD;
			return false;&#xD;
		}&#xD;
	},&#xD;
	find:function(mail,md){ //根据mail名称查找&#xD;
		for(var i=0;i&amp;lt;md.length;i++){&#xD;
			if(md[i].mail == mail)&#xD;
				return md[i];&#xD;
		}&#xD;
	}&#xD;
}&#xD;
&#xD;
$(function(){&#xD;
	mail.init();&#xD;
})&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果想添加更多的邮箱，自己加吧！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="background-color: #ffff99;"&gt;&lt;strong&gt;转载请注明，来自于&lt;a href="http://www.cnblogs.com/hxling/admin/hxling.cnblogs.com"&gt;&lt;span style="background-color: #ffff99;"&gt;疯狂秀才&lt;/span&gt;&lt;/a&gt;的博客　　&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2307739.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2011/12/30/2307739.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2011/12/18/2291665.html</id><title type="text">我的门户网站是这样炼成的，你认为咋样？</title><summary type="text">近两个月没有写博客啦，当然是忙啦，忙不借口，挤挤总会有空吧，没办法，思路乱啊不知道访怎么写前阵子在做一个门户站，门户站可大可小，用一个CMS就可以实现，我也参考了很多开源的.NET版的CMS项目，感觉上不是很理想，或者说我没有去深入理解作者意图。所以自己就又造了一个轮子，现在大块的主要功能都实现啦，下面我介绍下我的实现方式：一、主要技术： asp.net 4.0 + 模板引擎（NVelocity）二、功能简述： 1: 内容管理(主要是资讯) 2： 分类信息 （这个大家都懂吧像58像赶集像百姓）三 、实现方式： 首先，大部分的门户站都生成静态页啦，我没有，我不是不想生成静态页，是现在还没...</summary><published>2011-12-18T03:20:00Z</published><updated>2011-12-18T03:20:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2011/12/18/2291665.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2011/12/18/2291665.html"/><content type="html">&lt;p&gt;近两个月没有写博客啦，当然是忙啦，忙不借口，挤挤总会有空吧，没办法，思路乱啊不知道访怎么写&lt;/p&gt;&#xD;
&lt;p&gt;前阵子在做一个门户站，门户站可大可小，用一个CMS就可以实现，我也参考了很多开源的.NET版的CMS项目，感觉上不是很理想，或者说我没有去深入理解作者意图。所以自己就又造了一个轮子，现在大块的主要功能都实现啦，下面我介绍下我的实现方式：&lt;/p&gt;&#xD;
&lt;p&gt;一、主要技术：&lt;/p&gt;&#xD;
&lt;p&gt;asp.net 4.0 + 模板引擎（NVelocity）&lt;/p&gt;&#xD;
&lt;p&gt;二、功能简述：&lt;/p&gt;&#xD;
&lt;p&gt;1: 内容管理(主要是资讯)&lt;br /&gt;　　2： 分类信息 （这个大家都懂吧像58像赶集像百姓）&lt;/p&gt;&#xD;
&lt;p&gt;三 、实现方式：&lt;/p&gt;&#xD;
&lt;p&gt;首先，大部分的门户站都生成静态页啦，我没有，我不是不想生成静态页，是现在还没有做&lt;/p&gt;&#xD;
&lt;p&gt;下面说说我目前的实现方式吧&lt;/p&gt;&#xD;
&lt;p&gt;我把页面分成N个小块，每一个小块做为用户控件来处理，在后台为每个用户控件作一个模板，然后在根据用户控件模板生成单个文件 ，在作一个页面的模板，页面的模板中就　　　　　　　INCLUDE这些生成的用户控件，每次更新数据时，选中要更新的用户控件刷新就可以啦，数据是根据文章的一些属性来判断获取的。好吧，我承认我写的有点晕，还是看图吧：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/14345/2011121810531527.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;CMS 这块就这么多功能，下面一一简单介绍下：&lt;/p&gt;&#xD;
&lt;p&gt;模型管理：还没有用到，这个先放下。&lt;/p&gt;&#xD;
&lt;p&gt;频道栏目：这个比较好理解吧&lt;/p&gt;&#xD;
&lt;p&gt;内容管理：这块就是所有文章管理的地方&lt;/p&gt;&#xD;
&lt;p&gt;模板管理：这个是重中这重，也是CMS的核心，一会着重介绍下&lt;/p&gt;&#xD;
&lt;p&gt;包含文件管理：这个也比较简单啦，就是head footer 等一些INCLUDE的文件&lt;/p&gt;&#xD;
&lt;p&gt;信息采集：这块是自动采集文章的&lt;/p&gt;&#xD;
&lt;p&gt;用户控件：就是页面中每个小块的静态内容&lt;/p&gt;&#xD;
&lt;p&gt;生成页面：未完成&lt;/p&gt;&#xD;
&lt;p&gt;基本的功能就介绍到啦，下面重点介绍下模板管理模块：&lt;/p&gt;&#xD;
&lt;p&gt;为了便于管理我把模板分类别管理，模板类别我在系统中的数据字典中定义，其实这块就是一些模板 如下图：&lt;img style="border-style: initial; border-color: initial;" src="http://pic002.cnblogs.com/images/2011/14345/2011121811034985.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;把所有需要的用户控件模板分频道分栏目的建好以后，下面就是创建带数据的用户控件啦&lt;/p&gt;&#xD;
&lt;p&gt;创建用户控件如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/14345/2011121811114658.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;数据来源就是这个用户控件的数据从哪个栏目中获取&lt;/p&gt;&#xD;
&lt;p&gt;用户控件创建成功后，我们点编辑后会看到有数据的HTML代码如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/14345/2011121811134373.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们可以根据需要进行微调整&lt;/p&gt;&#xD;
&lt;p&gt;到这里基本数据都做好啦，下面就是在页面中引入这些用户控件啦&lt;/p&gt;&#xD;
&lt;p&gt;引入用户控件，同样也是模板中操作，需要注意的地方就是创建用户控件的文件名不能重复&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;写了这么多，不知各位看官有没有理解我的意图&lt;/p&gt;&#xD;
&lt;p&gt;系统还在进一步的开发中，发上来给自己做个备忘，要不然N天会忘记当初为什么做。&lt;/p&gt;&#xD;
&lt;p&gt;目前门户站以上线，网址：http://www.ytcnc.net 联通的机房，电信的访问可能会慢一些，有问题给我留言吧&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下一节介绍分类信息的实现方式&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2291665.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2011/12/18/2291665.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2011/10/23/2221918.html</id><title type="text">每个人应该知道的NVelocity用法</title><summary type="text">NVelocity是一个基于.NET的模板引擎（template engine）。它允许任何人仅仅简单的使用模板语言（template language）来引用由.NET代码定义的对象。从而使得界面设计人员与.NET程序开发人员基本分离。一、nVelocity的常用功能简介 1、 在页面中定义变量，并进行简单的运算。 2、 在页面中获得对后台程序实体对象的引用。 3、 在页面中迭代实体对象集合。 4、 在页面中获得实体对象的属性，及其方法。 5、 对逻辑判断语句的支持。 6、 对外部文件的引用。 7、 对外部文件的解析。二、nVelocity的工作原理 可以使用.NET的反射实...</summary><published>2011-10-23T10:03:00Z</published><updated>2011-10-23T10:03:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2011/10/23/2221918.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2011/10/23/2221918.html"/><content type="html">&lt;p&gt;NVelocity是一个基于.NET的模板引擎（template engine）。它允许任何人仅仅简单的使用模板语言（template language）来引用由.NET代码定义的对象。从而使得界面设计人员与.NET程序开发人员基本分离。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一、nVelocity的常用功能简介&lt;/p&gt;&#xD;
&lt;p&gt;1、 在页面中定义变量，并进行简单的运算。&lt;/p&gt;&#xD;
&lt;p&gt;2、 在页面中获得对后台程序实体对象的引用。&lt;/p&gt;&#xD;
&lt;p&gt;3、 在页面中迭代实体对象集合。&lt;/p&gt;&#xD;
&lt;p&gt;4、 在页面中获得实体对象的属性，及其方法。&lt;/p&gt;&#xD;
&lt;p&gt;5、 对逻辑判断语句的支持。&lt;/p&gt;&#xD;
&lt;p&gt;6、 对外部文件的引用。&lt;/p&gt;&#xD;
&lt;p&gt;7、 对外部文件的解析。&lt;/p&gt;&#xD;
&lt;p&gt;二、nVelocity的工作原理&lt;/p&gt;&#xD;
&lt;p&gt;可以使用.NET的反射实现。以下是nVelocity对迭代实体类的简单实现步骤：&lt;/p&gt;&#xD;
&lt;p&gt;1、 定义People类，并拥有Name与Sex属性。表示一个人。&lt;/p&gt;&#xD;
&lt;p&gt;2、 在页面中列出人物列表，则输入以下代码：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;#foreach($p in $ps)&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;p&amp;gt;欢迎您：$p.Name&amp;lt;/p&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;#end&lt;/p&gt;&#xD;
&lt;p&gt;3、 获取人物列表，保存在_List中。并指定页面中的字符串&amp;ldquo;ps&amp;rdquo;对应_List。&lt;/p&gt;&#xD;
&lt;p&gt;4、以文本方式读取模板文件，并匹配#foreach&amp;hellip;#end段，如果匹配到则继续匹配$X in $XX 段，分别记录用于保存集合与单项的字符，本次为&amp;ldquo;p&amp;rdquo;与&amp;ldquo;ps&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;5 、用Type对象的GetProperties()方法获取_list中每一项的所有属性，并在#foreach &amp;nbsp;#end段中循环将$p + 属性名称替换为当前对象的当前属性的值。当然如果要调用对象的方法也可以用同样的方式获得。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;三、基本语法&lt;/p&gt;&#xD;
&lt;p&gt;1、特殊字符介绍&lt;/p&gt;&#xD;
&lt;p&gt;A、&amp;ldquo;#&amp;rdquo;：表示开始做什么事情。&lt;/p&gt;&#xD;
&lt;p&gt;B、&amp;ldquo;$&amp;rdquo;：表示用于获得什么。(以$开头的表示&amp;ldquo;引用&amp;rdquo;意思是取得一些东东.可引用变量，属性，方法)&lt;/p&gt;&#xD;
&lt;p&gt;C、&amp;ldquo;##&amp;ldquo;：单行注释。&lt;/p&gt;&#xD;
&lt;p&gt;D、 &amp;ldquo;#*&amp;hellip; &amp;hellip;*#&amp;rdquo;：多行注释。&lt;/p&gt;&#xD;
&lt;p&gt;2、关键字&lt;/p&gt;&#xD;
&lt;p&gt;A、 Set：开始做什么事情，比如定义变量，给变量重新赋值等。(注意：如果右边的操作数是一个属性或命令的引用而返回null,那么赋值将不会成功，且在随后的VTL中也不能再取出使用,如果要用做if条件，一个解决办法是，先给变量赋一个值，然后再将一个属性或命令的引用赋给该变量)&lt;/p&gt;&#xD;
&lt;p&gt;B、 Foreach：迭代语句&lt;/p&gt;&#xD;
&lt;p&gt;C、 If：条件判断语句&lt;/p&gt;&#xD;
&lt;p&gt;D、 Elseif&lt;/p&gt;&#xD;
&lt;p&gt;E、 Else&lt;/p&gt;&#xD;
&lt;p&gt;F、 Include：对外部文件的引用，开始位置为模板路径。&lt;/p&gt;&#xD;
&lt;p&gt;G、 Parse：对外部文件的引用，并用nVelocity方式解析。&lt;/p&gt;&#xD;
&lt;p&gt;H、 Macro：创建宏，可以重复做某件事，类似于方法。&lt;/p&gt;&#xD;
&lt;p&gt;I、 &amp;nbsp;Even：双数执行&lt;/p&gt;&#xD;
&lt;p&gt;J、 &amp;nbsp;Odd ：单数执行&lt;/p&gt;&#xD;
&lt;p&gt;K、 Each：每次都执行&lt;/p&gt;&#xD;
&lt;p&gt;（备注：所有变量在未定义之前不能使用（因为我们习惯了有全局变量的习惯），一个合法的VTL标示符是以一个字母开头的。.NET后台定义的对象除外。模板语言区分大小写，所有的关键字必须为小写，默认情况下，NVelocity解析是不分大小写的，当然可以通过设置runtime.strict.math=true，采用严格解析模式。）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;四、使用示例&lt;/p&gt;&#xD;
&lt;p&gt;1、 &amp;nbsp;在页面中使用变量&lt;/p&gt;&#xD;
&lt;p&gt;定义变量：#set($a = &amp;ldquo;CNF&amp;rdquo;)&lt;/p&gt;&#xD;
&lt;p&gt;引用变量：欢迎光临：$a&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;定义变量：#set($a = 1)&lt;/p&gt;&#xD;
&lt;p&gt;运算：#set($a = $a + 1)&lt;/p&gt;&#xD;
&lt;p&gt;输出：$a &amp;nbsp; ##得：2&lt;/p&gt;&#xD;
&lt;p&gt;运算：#set($a = $a*5)&lt;/p&gt;&#xD;
&lt;p&gt;输出：$a &amp;nbsp; ##得：10&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;#set( $criteria = ["name", "address"] )&lt;/p&gt;&#xD;
&lt;p&gt;#foreach( $criterion in $criteria )&lt;/p&gt;&#xD;
&lt;p&gt;#set( $result = false ) &amp;nbsp;//先设置默认值&lt;/p&gt;&#xD;
&lt;p&gt;#set( $result = $query.criteria($criterion) )&lt;/p&gt;&#xD;
&lt;p&gt;#if( $result )&lt;/p&gt;&#xD;
&lt;p&gt;Query was successful&lt;/p&gt;&#xD;
&lt;p&gt;#end&lt;/p&gt;&#xD;
&lt;p&gt;#end&lt;/p&gt;&#xD;
&lt;p&gt;（备注：从以上可以看出nVelocity的替换顺序与.NET程序代码的执行基本一致，如果放在Foreach语句块中可以实现累加。并用If语句获得行号，对特殊行号的内容特殊处理。所有变量在未定义之前不能使用，.NET后台对象除外，最好采用正规引用格式，${a},正规引用格式一般用于在模板中直接调整字符串内容；静态引用输出:NVelocity遇到一个不能处理的引用时，一般他会直接输出这个引用$email的写法,页面上会看到的是$email,我们可以在$后面加上一个!号，那么就会输出空白.$!{email}如果不能处理会输出空白。如果email己定义了 (比如它的值是 foo),而这里你却想输出 $email. 这样一个字符串,就需要使用转义字符&amp;rdquo;\&amp;rdquo;，如：\$email）&lt;/p&gt;&#xD;
&lt;p&gt;2、 &amp;nbsp;在页面中使用条件判断语句&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;#if ($p.StrSex == "女")&lt;/p&gt;&#xD;
&lt;p&gt;#set($Sex = "女士")&lt;/p&gt;&#xD;
&lt;p&gt;#elseif ($p.StrSex == "男")&lt;/p&gt;&#xD;
&lt;p&gt;#set($Sex = "先生")&lt;/p&gt;&#xD;
&lt;p&gt;#elseif ($p.StrSex == "无")&lt;/p&gt;&#xD;
&lt;p&gt;#set($Sex = "人妖")&lt;/p&gt;&#xD;
&lt;p&gt;#else&lt;/p&gt;&#xD;
&lt;p&gt;#set($Sex = "怪物")&lt;/p&gt;&#xD;
&lt;p&gt;#end&lt;/p&gt;&#xD;
&lt;p&gt;（备注：可以嵌套在Foreach语句块中，用于对每个列表对象进行特殊显示处理。）&lt;/p&gt;&#xD;
&lt;p&gt;3、 &amp;nbsp;创建宏，可以当做方法使用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;创建：#macro(Add $a $b)&lt;/p&gt;&#xD;
&lt;p&gt;#set($c = $a + $b)&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;p&amp;gt;最后结果：$c&amp;lt;/p&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;#end&lt;/p&gt;&#xD;
&lt;p&gt;调用：#Add(1 2)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（备注：模板引擎的初始化方法有3种，一种参数为模板文件内容，一种是带模板文件地址。结果发现带模板文件内容的，在应用宏的时候好像有点问题。另外一个就是假如在宏里面加入一个判断语句，则可以实现递归调用。）&lt;/p&gt;&#xD;
&lt;p&gt;4、使用对象方法&lt;/p&gt;&#xD;
&lt;p&gt;定义变量：#set($str = &amp;ldquo;CNF&amp;rdquo;)&lt;/p&gt;&#xD;
&lt;p&gt;调用方法：$str.SubString(0,1)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;输出：C&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;定义变量：#set($a = 123)&lt;/p&gt;&#xD;
&lt;p&gt;调用方法：$a.GetType()&lt;/p&gt;&#xD;
&lt;p&gt;输出：System.Int32&lt;/p&gt;&#xD;
&lt;p&gt;（备注：不管是.NET代码定义的对象，还是设计人员在页面中定义的变量，都可以使用对象的方法及属性，这一点非常强大。）&lt;/p&gt;&#xD;
&lt;p&gt;5、使用even与odd简化代码，each辅助&lt;/p&gt;&#xD;
&lt;p&gt;如上面所说用IF语句可以在列表中为每行创建不同的样式，但如果只需要区分单行与双行的话，可以使用even与odd简化代码。如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;#foreach($p in $ps)&lt;/p&gt;&#xD;
&lt;p&gt;#even&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;p&amp;gt;双行：$p.StrName&amp;lt;/p&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;#odd&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;p&amp;gt;单行：$p.StrName&amp;lt;/p&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;#end&lt;/p&gt;&#xD;
&lt;p&gt;（备注：在使用这两个关键字时，出现了与创建宏一样的问题，即在初始化模板引引擎的时候，如果是用模板文件内容初始化的，会出现问题）&lt;/p&gt;&#xD;
&lt;p&gt;6、引用外部文件&lt;/p&gt;&#xD;
&lt;p&gt;Include与parse都有引入外部文件的作用，不同的是parse会根据nVelocity模板语言解析外部文件。也就是说如果引入当前模板，则会出现死循环。&lt;/p&gt;&#xD;
&lt;p&gt;#include 脚本元素让模板设计者可以在模板中引入一个本地文件, 这个被引入的文件将不会经过NVelocity的解析. 安全起见，可以引放的文件只是是配置参数TEMPLATE_ROOT所定义目录下的，默认为当前目录下.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;#include( "head.html" )&lt;/p&gt;&#xD;
&lt;p&gt;如果需要引入多个文件，可以像下面这样. &amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;#include( "one.gif","two.txt","three.htm" )&lt;/p&gt;&#xD;
&lt;p&gt;当然，还可用一个变量名来代替文件名引入. &amp;nbsp; &amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;#include( "greetings.txt", $seasonalstock )&lt;/p&gt;&#xD;
&lt;p&gt;#parse 元素指示可以引入一个包含TVL的本地文件，这个文件将被NVeloict engine解析输出。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;#parse( "me.vm" )&lt;/p&gt;&#xD;
&lt;p&gt;与 #include 指令不同, #parse 可以从引入的模板中得到变量引用.但#parse指令只能接受一个参数.VTL templates 被#parse 的模板中还可以再包含#parse声明，默认的深度为10，这是由配置参数directive.parse.max.depth在文件velocity.properties中决定的，你可以修改它以适合项目要求。&lt;/p&gt;&#xD;
&lt;p&gt;7、使用Foreach语句&lt;/p&gt;&#xD;
&lt;p&gt;上面多次列出Foreach语句，相信已经知道它的作用。即循环列出一组对象集合。比如：#foreach($p in $ps)，其中$ps需要与后台代码中具体的实体类名称对应，$p代表$ps中的其中一项。上面已经提到过，即$p可以调用实体类的属性和方法。&lt;/p&gt;&#xD;
&lt;p&gt;（备注：#foreach 语句必须以#end结束,通过引用变量$velocityCount可以访问到NVelocity提供的计数器:）&lt;/p&gt;&#xD;
&lt;p&gt;8、创建数组&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;创建：#set($List = [&amp;ldquo;男&amp;rdquo;,&amp;rdquo;女&amp;rdquo;])&lt;/p&gt;&#xD;
&lt;p&gt;遍历：#foreach($Item in $List)&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;p&amp;gt;List成员：$Item&amp;lt;/p&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;#end&lt;/p&gt;&#xD;
&lt;p&gt;输出：List成员：男&lt;/p&gt;&#xD;
&lt;p&gt;List成员：女&lt;/p&gt;&#xD;
&lt;p&gt;提供一个NVelocity 操作类VelocityHelper,方便大家使用：点击下载&lt;/p&gt;&#xD;
&lt;p&gt;NVelocity.dll下载:点击下载&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;VelocityHelper调用如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;VelocityHelper vh = new VelocityHelper();&lt;/p&gt;&#xD;
&lt;p&gt;vh.Init("~/template/"); &amp;nbsp; &amp;nbsp;//模板路径&lt;/p&gt;&#xD;
&lt;p&gt;vh.Put("templateVariable", Variable);&lt;/p&gt;&#xD;
&lt;p&gt;vh.Display("index.htm");&lt;/p&gt;&#xD;
&lt;p&gt;附：NVelocity常用语法指令&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;对变量的引用：$ [ ! ][ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ][ } ]。&lt;/p&gt;&#xD;
&lt;p&gt;在NVelocity中，对变量的引用都是以$开头加上变量名称。当使用!时表示当此变量值为空时，显示空字符串。比如当$article为空，那会显示&amp;ldquo;$article&amp;ldquo;，而$!article会显示为&amp;ldquo;&amp;rdquo;。{}为变量名称限定，有时候变量名称后会有字符串，这是就需要用到{}了。比如$articleshow，想引用$article，这时只要修改为${article}就可以。其实，NVelocity对整个模板解析后都会变成这种模式。&lt;/p&gt;&#xD;
&lt;p&gt;对属性的引用：$ [ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]* .[a..z, A..Z ][ a..z, A-Z, 0..9, -, _ ]* [ } ] 。&lt;/p&gt;&#xD;
&lt;p&gt;例如$article.Title或者${article.Title}。&lt;/p&gt;&#xD;
&lt;p&gt;对方法的引用：$ [ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]* .[ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]*( [ optional parameter list... &amp;nbsp;] ) [ &amp;nbsp;} ]。&lt;/p&gt;&#xD;
&lt;p&gt;例如：$article.GetListByTitle(&amp;lsquo;nvelocity&amp;rsquo;)或${article.GetListByTitle(&amp;lsquo;nvelocity&amp;rsquo;)}。其实对对象的属性值也可以用$article.get_Title()获得。&lt;/p&gt;&#xD;
&lt;p&gt;赋值指令#set：# [ { ] set [ } ] &amp;nbsp;( $ref = [ ", ' ]arg[ ", ' ] )。&lt;/p&gt;&#xD;
&lt;p&gt;例如：$article.Title=&amp;rsquo;NVelocity&amp;rsquo;，$$article.Categories=[1,2,3]，当然右侧也可以使用复杂的表达式：$article.Title=$otherArticle.Title.SubString(0,3)，算术表达式：$article.Page=4/3等等。属性赋值也可以用$article.set_Title(&amp;lsquo;NVelocity&amp;rsquo;)。&lt;/p&gt;&#xD;
&lt;p&gt;条件指令#if：# [ { ] if [ } ] ( [condition] ) [output] [ # [ { ] elseif [ } ] ( [condition] ) [output] ]* [ # [ { ] else [ } ] [output] ] # [ { ] end [ } ] 。&lt;/p&gt;&#xD;
&lt;p&gt;条件可以是返回bool的复查表达式。例如：#if($article.Total&amp;gt;1) $article.Title #else 没有数据 #end。&lt;/p&gt;&#xD;
&lt;p&gt;循环指令#foreach：# [ { ] foreach [ } ] ($refinarg)statement# [ { ] end [ } ]。&lt;/p&gt;&#xD;
&lt;p&gt;例如：#foreach($article in $articles) $article.Title #end。&lt;/p&gt;&#xD;
&lt;p&gt;引用静态资源指令#include：# [ { ] include [ } ] ( arg[ arg2 ... argn] )。&lt;/p&gt;&#xD;
&lt;p&gt;例如：#include(&amp;lsquo;tmp.js&amp;rsquo;)，会把tmp.js文件内容插入当前流。当然可以使用表达式：#include($article.Url)。&lt;/p&gt;&#xD;
&lt;p&gt;引用并解析资源指令#parse：# [ { ] parse [ } ] ( arg )。&lt;/p&gt;&#xD;
&lt;p&gt;例如：#parse(&amp;lsquo;tmp.js&amp;rsquo;)，与#include不同是，假如tmp.js文件中有NVelocity的指令，变量会进行处理，并把结果插入到当前流。&lt;/p&gt;&#xD;
&lt;p&gt;停止指令#stop：# [ { ] stop [ } ] 。&lt;/p&gt;&#xD;
&lt;p&gt;当NVelocity解析到此指令时，会停止解析过程。一般用户调试。&lt;/p&gt;&#xD;
&lt;p&gt;计算指令#evaluate：# [ { ] evaluate [ } ] ( arg )。&lt;/p&gt;&#xD;
&lt;p&gt;例如：#evaluate(&amp;lsquo;$article.Title&amp;rsquo;)，会在当前输出$article.Title&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #333333; font-family: Arial, Tahoma, Verdana, sans-serif; line-height: 25px; background-color: #f7fcff;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;NVelocity的$与Jquery的$发生冲突时的解决方法有以下几个：&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;1、&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;使用jQuery.noConflict。 如：var j = jQuery.noConflict(); j.ajax();&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;缺点：当使用jQuery的相关插件时,会使得插件失效哦！&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;2、&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;使用jQuery代替$. 如:jQuery.ajax();&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;缺点：不适合扩展，一旦替换成第三方库时，那就麻烦大发&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;3、&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;wrap jQuery中的冲突方法。&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;如$.ajax()在Velocity中会冲突，则重新定义如下：&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;function dw(){}&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;dw.ajax=function(s){ jQuery.ajax(s); } dw.ajax();&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;4、&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;定义一个$JQ为$.　以后在js 中就可以用${JQ}AJAX了．&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;在前台这样写(定义):#set($JQ="$.")&amp;nbsp;&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span  style="color: #333333; font-family: Arial, Tahoma, Verdana, sans-serif; line-height: 25px; background-color: #f7fcff;"&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial; border-width: 0px; padding: 0px;"&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2221918.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2011/10/23/2221918.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2011/10/09/2203463.html</id><title type="text">基本权限管理框架 更新!!</title><summary type="text">更新: 1.所有弹窗均调整为在父窗口中弹出. 2.更改几处小BUG 3.iframe 中不在引用EASYUI.min.js ,使用EASYLOADER.JS 加载相关的插件 4.加入错误日志插件 elmah部分截图: 有需要购买源码的朋友,联系我吧!</summary><published>2011-10-09T03:49:00Z</published><updated>2011-10-09T03:49:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2011/10/09/2203463.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2011/10/09/2203463.html"/><content type="html">&lt;p&gt;&lt;strong&gt;更新:&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.所有弹窗均调整为在父窗口中弹出.&lt;/p&gt;&#xD;
&lt;p&gt;2.更改几处小BUG&lt;/p&gt;&#xD;
&lt;p&gt;3.iframe 中不在引用EASYUI.min.js ,使用EASYLOADER.JS 加载相关的插件&lt;/p&gt;&#xD;
&lt;p&gt;4.加入错误日志插件 elmah&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;部分截图:&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/14345/2011100911473352.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;有需要购买源码的朋友,联系我吧!&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2203463.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2011/10/09/2203463.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2011/10/08/2203003.html</id><title type="text">[求解] 关于jQuery 的 inArray 方法</title><summary type="text">例如:$.get(&amp;#39;aaaaa.ashx&amp;#39;,null,function(d){ // 假设d 返回 的值为 1,3,43,23,54,67 var arr = d.split(&amp;#39;,&amp;#39;); $.inArray(3,arr) ==-1 //true //为什么啊 //如果写成这样的 var arr = eval(&amp;#39;[&amp;#39;+d+&amp;#39;]&amp;#39;); $.inArray(3,arr) &amp;gt;-1 //true});这是为什么呢? 望知道的朋友跟贴回复下.</summary><published>2011-10-08T13:10:00Z</published><updated>2011-10-08T13:10:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2011/10/08/2203003.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2011/10/08/2203003.html"/><content type="html">&lt;p&gt;例如:&lt;/p&gt;&#xD;
&lt;p&gt;$.get('aaaaa.ashx',null,function(d){&lt;/p&gt;&#xD;
&lt;p&gt;// 假设d 返回 的值为 1,3,43,23,54,67&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;var arr = d.split(',');&lt;/p&gt;&#xD;
&lt;p&gt;$.inArray(3,arr) ==-1&amp;nbsp; //true&lt;/p&gt;&#xD;
&lt;p&gt;//为什么啊&lt;/p&gt;&#xD;
&lt;p&gt;//如果写成这样的&lt;/p&gt;&#xD;
&lt;p&gt;var arr = eval('['+d+']');&lt;/p&gt;&#xD;
&lt;p&gt;$.inArray(3,arr) &amp;gt;-1 //true&lt;/p&gt;&#xD;
&lt;p&gt;});&lt;/p&gt;&#xD;
&lt;p&gt;这是为什么呢? 望知道的朋友跟贴回复下.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2203003.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2011/10/08/2203003.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2011/09/17/2179898.html</id><title type="text">MVC 3 : AJAX 权限验证</title><summary type="text">初学MVC3有很多不明白的地方，尤其是数据传递，SESSION控制 等等。近期用MVC3做了个小项目，其中用到权限验证问题描述： 有一个 delete 操作，是AJAX请求，权限验证是UrlAuthorizeAttribute 继承自 AuthorizeAttribute ，如验证没有权限则执行如下代码：filterContext.HttpContext.Response.Redirect(&amp;quot;/Error/deny&amp;quot;,true);ajax 的 delete 对应的ACTION 返回JsonResult问题出来了，每次执行delete 操作都不跳转至无权访问的提示页，调试跟踪</summary><published>2011-09-17T14:00:00Z</published><updated>2011-09-17T14:00:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2011/09/17/2179898.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2011/09/17/2179898.html"/><content type="html">&lt;p&gt;初学MVC3有很多不明白的地方，尤其是数据传递，SESSION控制 等等。&lt;/p&gt;&#xD;
&lt;p&gt;近期用MVC3做了个小项目，其中用到权限验证&lt;/p&gt;&#xD;
&lt;p&gt;问题描述：&lt;/p&gt;&#xD;
&lt;p&gt;有一个 delete 操作，是AJAX请求，权限验证是UrlAuthorizeAttribute 继承自 AuthorizeAttribute ，如验证没有权限则执行如下代码：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: #888888;"&gt;filterContext.HttpContext.Response.Redirect("/Error/deny",true);&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: #888888;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;ajax 的 delete 对应的ACTION 返回&amp;nbsp;&lt;strong&gt;JsonResult&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;问题出来了，每次执行delete 操作都不跳转至无权访问的提示页，调试跟踪N遍，没有成功。突然灵光一现，&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;心想：即然 ACTION 返回的是 JsonResult 那没有权限的时候应该返回同样的类型才对，所以无权访问的执行代码改为如下：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;filterContext.Result = new JsonResult { Data = new BasicJsonMessage { Message = "您没有权限", Success=false } };&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;程序运行通过，并通过JS提示 &amp;ldquo;您没有权限！&amp;rdquo;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;BasicJsonMessage 这是我自定义的类，两个属性 Message 和 Success&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;到此好像明白了点什么 ，但又抓不着。&lt;/b&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;b&gt;你想到什么了吗？&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2179898.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2011/09/17/2179898.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2011/08/19/2145661.html</id><title type="text">jQuery.Easyui 1.2.4 CHM API 下载</title><summary type="text">jquery easyui 1.2. 4ChangeLogBugmenu: The menu position is wrong when scroll bar appears. fixed.accordion: Cannot display the default selected panel in jQuery 1.6.2. fixed.tabs: Cannot display the default selected tab panel in jQuery 1.6.2. fixed.Improvementmenu: Allow users to disable or enable men</summary><published>2011-08-19T06:12:00Z</published><updated>2011-08-19T06:12:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2011/08/19/2145661.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2011/08/19/2145661.html"/><content type="html">&lt;p&gt;jquery easyui 1.2. 4&lt;/p&gt;&#xD;
&lt;p style="text-align: left; margin: 7.5pt 0cm; mso-pagination: widow-orphan; mso-outline-level: 4;"  align="left"&gt;&lt;span &gt;&lt;b&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; color: #cc0000; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;ChangeLog&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; color: #cc0000; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left; mso-pagination: widow-orphan;"  align="left"&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; color: black; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;Bug&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;ul type="disc"&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l2 level1 lfo1;" &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;menu&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: The menu position is wrong when scroll bar appears. &lt;span &gt;fixed&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l2 level1 lfo1;" &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;accordion&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: Cannot display the default selected panel in &lt;span &gt;jQuery&lt;/span&gt; 1.6.2. &lt;span &gt;fixed&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l2 level1 lfo1;" &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;tabs&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: Cannot display the default selected tab panel in &lt;span &gt;jQuery&lt;/span&gt; 1.6.2. &lt;span &gt;fixed&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p style="text-align: left; mso-pagination: widow-orphan;"  align="left"&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; color: black; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;Improvement&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;ul type="disc"&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l1 level1 lfo2;" &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;menu&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: Allow users to disable or enable menu item.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l1 level1 lfo2;" &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;combo&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: Add 'delay' property to set the delay time to do searching from the &#xD;
last key input event.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l1 level1 lfo2;" &gt;&lt;span &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;treegrid&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: The '&lt;span &gt;getEditors&lt;/span&gt;' and '&lt;span &gt;getEditor&lt;/span&gt;' methods are supported now.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l1 level1 lfo2;" &gt;&lt;span &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;treegrid&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: The '&lt;span &gt;loadFilter&lt;/span&gt;' option is supported &#xD;
now.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l1 level1 lfo2;" &gt;&lt;span &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;messager&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: Add 'progress' method to display a message box with a progress &#xD;
bar.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l1 level1 lfo2;" &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;panel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: Add 'extractor' option to allow users to extract panel content from &#xD;
&lt;span &gt;ajax&lt;/span&gt; response.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p style="text-align: left; mso-pagination: widow-orphan;"  align="left"&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; color: black; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;New Plugins&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;ul type="disc"&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l0 level1 lfo3;" &gt;&lt;span &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;searchbox&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: Allow users to type words into box and do searching &#xD;
operation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li style="text-align: left; color: black; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l0 level1 lfo3;" &gt;&lt;span &gt;&lt;span &gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;progressbar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; background: white; font-size: 10pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt;" lang="EN-US"&gt;: To display the progress of a task.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;div style="text-align: left;"&gt;&lt;span style="font-size: 24pt;"&gt;&lt;strong&gt;&lt;span face="Arial, sans-serif" size="2" style="font-family: Arial,sans-serif;"&gt;&lt;a href="http://dl.dbank.com/c0abvdia1w"&gt;Download&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div style="text-align: left;"&gt;&lt;span face="Arial, sans-serif" size="2" style="font-family: Arial, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2145661.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2011/08/19/2145661.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hxling/archive/2011/08/16/2141498.html</id><title type="text">基本权限管理框架</title><summary type="text">一直都想做一个后台权限管理框架，不需要太复杂的功能，满足一般需求即可，体积小巧，速度快，基本权限管理框架，就是这样的一个小型权限框架，你信不信我不知道，反正我信！~~</summary><published>2011-08-16T12:56:00Z</published><updated>2011-08-16T12:56:00Z</updated><author><name>疯狂秀才</name><uri>http://www.cnblogs.com/hxling/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hxling/archive/2011/08/16/2141498.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hxling/archive/2011/08/16/2141498.html"/><content type="html">&lt;p&gt;一直都想做一个后台权限管理框架，不需要太复杂的功能，满足一般需求即可，体积小巧，速度快，基本权限管理框架，就是这样的一个小型权限框架，至于你相不相信我不知道，反正我信！~~&lt;/p&gt;&#xD;
&lt;p&gt;好吧，先上图，有图才有真像&lt;/p&gt;&#xD;
&lt;p&gt;解决方案一览：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081621185692.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一、登录窗口：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620124345.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;此窗口没有什么要说明的，单位代码类似于帐套的这么一个概念，可用于&amp;nbsp;&lt;span style="font-family: arial, 宋体, sans-serif; line-height: 24px;" &gt;SaaS 系统~&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: arial, 宋体, sans-serif; line-height: 24px;" &gt;二、登录后的界面&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: arial, 宋体, sans-serif; line-height: 24px;" &gt;　　&lt;/span&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620172711.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;左侧导航菜单动态生成。&lt;/p&gt;&#xD;
&lt;p&gt;三、系统权限&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620191064.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;系统权限，顾名思义，就是整个系统中可能会用的到的所有操作。集中在此模块中进行管理&lt;/p&gt;&#xD;
&lt;p&gt;1）、添加、修改界面：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620225285.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;系统中有一套图标，可以点图标一栏后的 &lt;strong&gt;选取&lt;/strong&gt;&amp;nbsp;进行图标的选取，也可以自己修改或添加css&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620292561.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;图标下载地址：&lt;a href="http://dl.dbank.com/c036dagw0b"&gt;http://dl.dbank.com/c036dagw0b&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;四、导航菜单，便于管理系统中的菜单，系统发布后，可将此项隐藏或删除&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620321993.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620323842.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;分配权限：就是为菜单分配有哪些可以操作的功能。如数据字典页有添加、修改、删除等功能，那么就可以按下图操作&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620340395.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;提交成功后，进入相关操作页就后自动生成相关操作按钮&lt;/p&gt;&#xD;
&lt;p&gt;五、角色管理：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620371291.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;角色权限设置如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620375258.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;六、用户管理：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620393064.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620402013.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;可以为用户分配多个角色&lt;/p&gt;&#xD;
&lt;p&gt;七、数据字典&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620420316.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;八、组织机构&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/14345/2011081620425393.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;主要功能都列完，我的言语表达能力不行，只能用图来表达啦。相信很多朋友一看就明白怎么回事，我要的就是这个效果，因为简单所以编程快乐！~~&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本系统大部分使用AJAX操作。大大提高了用户体验，操作起来相对要简单明了一些。&lt;/p&gt;&#xD;
&lt;p&gt;系统中用到的技术如下：&lt;/p&gt;&#xD;
&lt;p&gt;ASP.NET 2.0 + c# + sQL2000 + JQUERY + jQuery Easyui + jqGrid .....&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;此套框架，适合初中级程序员观摩学习、适用于中小型管理系统。有需要的朋友可以联系，&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;&lt;span style="font-size: 18pt;"&gt;我的 QQ：1055818239 手机：18668088525&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 18pt; background-color: #ffffff; color: #99cc00;"&gt;&lt;strong&gt;（暂不会免费开源，请勿跟贴所取源码，以免浪费您的宝贵力气。有意&lt;span style="color: #ff0000;"&gt;购买源码&lt;/span&gt;者，请加我QQ）&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hxling/aggbug/2141498.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hxling/archive/2011/08/16/2141498.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
