真的骄傲梦想家园
专业源于兴趣和努力

         如今,NHibernate有了,NSpring有了,唯独少了个NStruts。也许是因为.netwebform开发模式吧,NStruts对于.net来说没有多大的实用价值,webform已经很struts了。不过,我还是觉得struts的开发模式用起来顺手一点。

         当一个页面的数据项过多的时候,假如有几十个的文本输入框,在后台获取它们的数据实在是件相当痛苦的事情。如果能像struts那样,直接发送个请求就OK了,那该有多好。Webformstruts各有优点,如果能在做项目中,将起到一个互补的作用。

         基于以上原因,我设计了一个.net版的struts,名字就叫NStruts。这是一个开源的项目,支持的朋友希望也加进这个项目来,共同完善它。我设计的思路是,将webform的优点和struts的优点相结合,形成一个独特的struts

  

 

  

现在以上功能除了依赖注入拦截器没有做好,其它功能都已经做好了。

NStruts由三个核心类构造,Configuration, Dispatcher, ActionSupport

         ConfigurationConfiguration类负责获取获取配置文件的信息

         DispatcherDispatcher类负责请求Action,拦截Action,并执行Action内的方法等。

         ActionSupportActionSupport类是抽象类,提供了一些方法的封装,Action类可以继承该类以获得更多的功能。

  首先看一下使用示例吧

  页面的代码如下:

Default.aspx

  表单控件可以是普通的html标签,而且不需要设置runat="server"哦。

  先定义一个Action类:

TypeAction

TypeButton在代码:

TypeButton_Click

通过Type传值可以不需要配置文件,使用起来比较简单。

  NStruts是支持配置文件的,而且还支持多个配置文件,可以避免了单个文件带来的代码过长问题,也能起到团队协作的作用。使用配置文件的好处是很多的,能够更充分地发挥NStruts的功能,虽然会麻烦了点。NStruts的配置文件格式如下:

nstruts

如果使用配置文件,则需要创建一个默认的配置文件,并把它保存在web应用程序的根目录下,配置文件的名字为:nstruts.xml。

如果有多个配置文件,可在include结点添加。在执行Action的Execute后,如果在result结点中没有相应的信息,则返回到方法调用处。

如下演示:

LoginAction

 

Login_Click

由上面的代码可以看到,Action可以只是一个普通的C#类。

继承自ActionSupport类能获得更多的功能,如表单数据验证:

OtherAction 

 

Other_Click

 

可以看到,Action的属性值将会保存在Page.Items的ValueTable中返回到方法调用页面,表单验证的错误信息保存在ValueTable的FieldErrorTable中。

下面是项目的源码:NStrutsSolution.rar

注释是非常的详细的,希望喜欢的朋友支持的朋友,一起来完善。如果有朋友对源码有了修改,希望能给我发一份。

我的邮箱地址是reallypride@163.com

我的QQ是:571398367

欢迎大家提意见,也希望大家的参与。

项目会不定期地更新,下一个版本打算加入简单的依赖注入功能。

 

posted on 2008-10-21 21:40  真的骄傲  阅读(3121)  评论(18编辑  收藏  举报