NClay框架MVC应用实战
这一章节主要讲述NClay框架的MVC在实际应用的入门,开发人员可以通过该案例程序可以看到区别于传统WebForm和MonoRail的MVC全新开发模式实现;在NClay中并不需要象传统MVC组件那样实现Controller,这部分完全由NClay内部实现;开发人员通过attribute来描述View和Model的关联处理。NClay还引入的接口规范,设计人员在设计系统时必须把业务相关逻辑接口化来实现功能。
下面通过一个类别处理需求来讲述NClay的处理过程:
逻辑接口和逻辑制定
首先思考类别处理的逻辑有那些,简单的定义有获取,修改,添加和查询等。总结功能后就制定相关接口:
public interface ICategoryView
{
IList<Categories> Categories
{
get;
set;
}
}
public interface ICategorySave
{
Categories Category
{
get;
set;
}
}
public interface ICategoryLoad
{
Categories Category
{
get;
set;
}
int CategoryID
{
get;
set;
}
}
逻辑接口制定完成后接下来就是对接口处理的逻辑处理器
[NClay.MVC.Controller]
public class LogicHandler
{
public void View(ICategoryView logic)
{
Expression exp = new Expression();
logic.Categories = exp.List<Categories>();
}
public void Save(ICategorySave logic)
{
if (logic.Category.CategoryID > 0)
DaoContext.Edit(logic.Category);
else
DaoContext.Add(logic.Category);
}
public void Load(ICategoryLoad logic)
{
if (logic.CategoryID > 0)
{
logic.Category = DaoContext.Load<Categories>(logic.CategoryID);
}
}
}
虽然以上代码处理并不完善,但已经足够体现框架的处理模式。
视图的实现
当接口和处理逻辑都实现后View需要做的事情就是实现相关接口和控制器的描述了。
[NClay.MVC.Tag("~/Categories.aspx")]
[NClay.MVC.Get(typeof(ICategoryLoad))]
[NClay.MVC.Post(typeof(ICategorySave))]
[NClay.MVC.All(typeof(ICategoryView))]
public class CategoriesView:ICategorySave,ICategoryView,ICategoryLoad
{
#region ICategoryLoad 成员
[NClay.MVC.Bind("item")]
public Categories Category
{ get; set; }
public int CategoryID
{ get; set; }
#endregion
#region ICategoryView 成员
IList<Categories> ICategoryView.Categories
{ get; set; }
#endregion
}
[NClay.MVC.Tag("~/Categories.aspx")]
描述当接受Categories.aspx页面请时框架初始化这个视图对象
[NClay.MVC.Get(typeof(ICategoryLoad))]
当页面请求为Get时执行ICategoryLoad逻辑
[NClay.MVC.Post(typeof(ICategorySave))]
当页面请求为Post时执行ICategorySave逻辑
[NClay.MVC.All(typeof(ICategoryView))]
任何请求都处理ICategoryView逻辑
到这里已经描述了NClay的处理过程,对于HTML输出描述就不在这里贴出来了可以下载案例代码了解详情。从实现的代码中可以看到代码非常规范和清晰,就也是NClay框架的出发点。