|
| 首页 → 程序开发 → .NET教程 |
| 阅读文章(首页/程序开发/.NET教程/) |
开源的.net MVC框架ProMesh.NET学习
前面有朋友介绍了Activa.ProMesh这个WEB开发框架.看起来觉得用起来蛮不错的.就学习了下,用了点时间做了个blog示例,示例演示: http://cnblogs.icastle.com.cn/index.ashx blog例子下载地址: http://cnblogs.icastle.com.cn/newblog.rar 之前提供的数据库表结构不完整,现在加上了,并且有数据库备份文件,另外项目使用VS.NET2008开发的,所以很抱歉,有要打开的,只有自己降到VS2005了 另外推荐下我同事弄的代码片段网,有用的代码片段都可以来这里发布哦 http://www.codesnippets.cn 觉得ProMesh学习起来还是很简单的,例子也很容易看懂. 稍微研究下相关的方法都能了解个大概. 下面把基本配置说下,很简单 1.引用Activa.ProMesh.dll 2.配置web.config文件,下面是我的配置 1<?xml version="1.0" encoding="utf-8"?> 2 3<configuration> 4 5 <appSettings> 6 <add key="ProMesh.ApplicationClass" value="Blog.Web.Application, Blog.Web"/> 7 </appSettings> 8 9 <system.web> 10 <!-- 11 设置 compilation debug="true" 可将调试符号插入 12 已编译的页面中。但由于这会 13 影响性能,因此只在开发过程中将此值 14 设置为 true。 15 --> 16 <compilation debug="false"> 17 18 </compilation> 19 <!-- 20 通过 <authentication> 节可以配置 ASP.NET 用来 21 识别进入用户的 22 安全身份验证模式。 23 --> 24 <authentication mode="Windows" /> 25 <!-- 26 如果在执行请求的过程中出现未处理的错误, 27 则通过 <customErrors> 节可以配置相应的处理步骤。具体说来, 28 开发人员通过该节可以配置 29 要显示的 HTML 错误页 30 以代替错误堆栈跟踪。 31 32 <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 33 <error statusCode="403" redirect="NoAccess.htm" /> 34 <error statusCode="404" redirect="FileNotFound.htm" /> 35 </customErrors> 36 --> 37 <httpHandlers> 38 <add verb="*" path="*.ashx" type="Activa.ProMesh.PageHandler, Activa.ProMesh"/> 39 </httpHandlers> 40 <httpModules> 41 <add name="ProMeshModule" type="Activa.ProMesh.HttpModule, Activa.ProMesh"/> 42 </httpModules> 43 </system.web> 44 45</configuration> 46 httpHandler和httpModule就按照上面的配置.path="*.ashx"改成你想要的扩展名. 设置ProMesh.ApplicationClass,注意value="Blog.Web.Application, Blog.Web",后面一个Blog.Web是程序集名称,不是namespace <add key="ProMesh.ApplicationClass" value="Blog.Web.Application, Blog.Web"/> 配置Application.cs代码 1using System; 2using Activa.ProMesh; 3 4 5namespace Blog.Web 6{ 7 public static class Application 8 { 9 10 public static void Init() 11 { 12 13 } 14 } 15} 3.开始写Controller 所有的Controller都要继承PageController类,每个Controller都对应一个同名template,template默认放在templates目录下,例如我有一个indexController,在templates下应该有一个index.htm文件.框架默认要建一个master.htm,会应用到所有的Controller, master.htm代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> $[_VIEW_] </body> </html> $[_VIEW_],即是要替换的内容 login.cs 1using System; 2using System.ComponentModel; 3using Activa.ProMesh; 4using Activa.CoolStorage; 5using Blog.Domain; 6 7namespace Blog.Web.Controllers 8{ 9 [Layout("u/blogmaster")] 10 [Url("u/blog")] 11 public class blog : BaseController 12 { 13 public void Run(int uid) 14 { 15 BlogUser user = BlogUser.Read(uid);//当前用户 16 17 CSParameterCollection param = new CSParameterCollection(); 18 param.Add("@uid",uid); 19 20 CSList<BlogCate> cates = BlogCate.List("Uid=@uid",param).OrderedBy("CateId");//分类数据 21 22 CSList<BlogPost> posts = BlogPost.List("UserId=@uid","@uid",uid).OrderedBy("PostId");//日志数据 23 posts.ApplySort(posts.SortProperty, ListSortDirection.Descending);//排序 24 25 ViewData["cates"] = cates; 26 ViewData["posts"] = posts; 27 ViewData["user"] = user; 28 } 29 } 30} 31 上面是我的loginController,刚才说了默认所有Controller应用master.htm模版,这里通过[Layout("u/blogmaster")]重新指定新的母版页,即templates/u/blogmaster.htm文件,[Url("u/blog")]即指定访问地址,这里地址是u/blog.ashx. 上面说了,每个Controller对应同名的template,可以定义 [View("u/blog")]自己指定view模版 Run是Controller的入口,使用ViewData["posts"]向模版传递变量,下面是模版代码 posts是一个IList,所以这里 <!--$[foreach post in posts]--> <!--$[endfor]--> 进行遍历输出数据,上面就是模版引擎的语法。还是很简单的。和monorails有点区别,也容易理解 <div id="columnwrap"> <div id="content-main"> <h1>$[user.UserName]的博客</h1> <h2 class="deck"><!--博客介绍--></h2> <!--$[foreach post in posts]--> <h2> <a href="http://www.aspcool.com/lanmu/~/u/showinfo.ashx?id=$[post.PostId]">$[post.Title]</a> [$[post.Cate.CateName]] </h2> <p class='date'>发布于$[post.PostDate] <a href="http://www.aspcool.com/lanmu/~/u/blog.ashx?uid=$[post.User.UserId]">$[post.User.UserName]</a> <a class="rss" href="http://www.aspcool.com/lanmu/dot.asp#">RSS</a></p> <div> <p> $[post.Summary] </p> </div> <p class="small"><a href="http://www.aspcool.com/lanmu/~/u/showinfo.ashx?id=$[post.PostId]">阅读全文 »</a></p> <!--$[endfor]--> <div id="content-secondary" align="center"> </p> 页数 </p> </div> </div> <!-- END #content-main --> <div id="content-related" class="sidebar"> <!--$[render "../../templates/u/menu.htm"]--> </div> 这样一个基本的例子就可以运行了。里面还有很多细节的使用。我在例子中一种效果都使用了多种方法来测试,可以看看例子的使用 数据库建表文件在DataBase目录里 数据库连接在Global.cs文件里个性 if (!CSConfig.HasDB()) { CSConfig.SetDB(new CSDataProviderSqlServer("Server=.;Database=NewBlog;UID=sa;PWD=;")); }基本就可以运行了
|
| 相关文章 |
| 发表评论 |
BK网络学院主要内容:平面设计教程,网站开发在线教程,网页制作教程,服务器教程,网络编程,数据库教程等。产业部:沪ICP备05019380号 陇ICP备05004709号 公安局:GR6201030003 Copyright © BK设计 Powered by BK网络学院 |