fuyun

博客园 首页 新随笔 联系 订阅 管理
  16 Posts :: 1 Stories :: 42 Comments :: 1 Trackbacks

关注MVC开发Web应用程序是看到《一个.NET的MVC Web框架》这篇文章以后开始的,通过官方网站的几个教程很快引起了我的兴趣,的确是非常简洁,让我想起了ASP的时代。再搜索了一下ASP.NET MVC框架,发现MonoRail相对来说文档较多一些,决定从它开始。最近一段时间微软要推出ASP.NET的MVC框架新闻各大技术网站都在转,博客园针对MonoRail的文章也多了起来。使用ASP.NET WebForm开发的经验不是很多,所以学习MonoRail显得更容易一些,没有固有的思维方式限制,这对我是个有利的一面。

准备

学习MonoRail的一些参考资料:

Velocity 《VTL语法参考指南》中文版
MonoRail在View一层提供了多种Render引擎,貌视NVelocity的最多。它语法应该和Velocity是一致的(未考证)。

prototype.js 1.4版开发者手册
如果要使用AJAX技术的话,对这套JS库有所了解对你非常有帮助,MVC模式下可没有Update Panel使用了。

MonoRail中的ajaxHelper入门
看了这篇文章以后才知道AJAX其实和MonoRail MVC框架没多大关系,要想用好AJAX应用还是得了解prototype.js这些库。

先看看博客园两位朋友的文章,入门还要更快一些。
一是YokMonoRail专栏
二是福娃 的 MonoRail学习-介绍篇

另外MonoRail的官方网站http://www.castleproject.org/是必须要去的。

实战

在官方网站下载安装包安装好以后,就可以使用VS2005开始工作了,具体方法还是参考上面两位朋友的文章吧。
通过两个晚上的摸索,对MonoRail有了大致的了解。通过编写了一个留言簿的实战,明白了如何在MonoRail上实现以下技术和一些细节。
1、三层架构应用
2、AJAX应用
3、Url Rewriting
4、Model、View、Controller分别建立Project,在大中型项目中这是必不可少的。

现在还没有搞清楚的事情和下一步要做的实验:
1、多层目录结构如何与Controller对应;
2、表单验证是否有更方便的实现方式,现在使用prototype.js可以进行验证,不过内容仍然提交到服务器上了。
3、如何进行View嵌套,现在只是通过ShareView的方式共享。
4、View目录中的模板使用的图片、CSS等文件放在那儿合适。现在的问题是放在网站目录下编辑时看不到效果,放到View目录下不利于发布。
5、如何方便的对网站换肤,还有待进一步实验。

希望我能坚持把这次学习过程记录下来。
项目截图:

把这次实践的源码发上来,希望对学习MonoRail的朋友有所帮助。

 * 昨天晚上发布的代码中未包含NVelocity引擎库,现在已经加上。请需要的朋友重新下载。
下载:http://files.cnblogs.com/fuyun/GeustBook.rar

posted on 2007-10-17 22:58 浮云 阅读(1017) 评论(6)  编辑 收藏 网摘 所属分类: MonoRail专题

Feedback

#1楼 2007-10-18 08:30 戏水      
共同研究 希望和你交流
  回复  引用  查看    

#2楼 2007-10-18 08:35 戏水      
我运行你的代码 出现了 如下错误 不知是何原因
--------------
[ConfigurationErrorsException: The 'viewEngine' node is not optional]
System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult) +178
System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject) +896
System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject) +1221
System.Configuration.BaseConfigurationRecord.GetSection(String configKey, Boolean getLkg, Boolean checkPermission) +56
System.Configuration.BaseConfigurationRecord.GetSection(String configKey) +8
System.Web.Configuration.HttpConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String configKey) +65
System.Configuration.ConfigurationManager.GetSection(String sectionName) +107
Castle.MonoRail.Framework.Configuration.MonoRailConfiguration.GetConfig() +50
Castle.MonoRail.Framework.MonoRailServiceContainer.ObtainConfiguration() +74
Castle.MonoRail.Framework.MonoRailServiceContainer.InitConfiguration() +44
Castle.MonoRail.Framework.MonoRailServiceContainer.Start() +44
Castle.MonoRail.Framework.EngineContextModule.Init(HttpApplication context) +138
System.Web.HttpApplication.InitModulesCommon() +66
System.Web.HttpApplication.InitInternal(HttpContext context, HttpApplicationState state, MethodInfo[] handlers) +814
System.Web.HttpApplicationFactory.GetNormalApplicationInstance(HttpContext context) +243
System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +106
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +340




  回复  引用  查看    

#3楼[楼主] 2007-10-18 08:51 浮云      
@戏水
可能是你安装的MonoRail的库版本和我的不一样,我的是Castle-net-2.0-release-2007-9-20。

另外代码中忘记打包NVolecity的库,这个库不会自动应用,你可以下载新的代码试试。

你是Discuz!NT的戏水吧:)

  回复  引用  查看    

#4楼 2007-10-19 22:29 戏水      
浮云兄:
发现了 一, 和 三 ,咋没看到二呢 ?

您的文章很好 , 您多写点, 俺拭目以待 。

  回复  引用  查看    

#5楼[楼主] 2007-10-20 09:03 浮云      
@戏水
二我放在新手区里面,没太多MonoRail的内容。

http://www.cnblogs.com/fuyun/archive/2007/10/18/929610.html" target="_new">http://www.cnblogs.com/fuyun/archive/2007/10/18/929610.html

  回复  引用  查看    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 928236




相关文章:

相关链接: