在ASP.NET下做了一个实验MVC的小东西,希望能得到更多的参考意见

星期五下班前一时兴起,对MVC发表了一点看法。后来就想干脆弄个小东西来验证一些自己的想法帮组理清思路。所要源代码的免了,3个小时的急就章实在是乱得可以,既没有好的架构,也没有任何代码质量可言,主要是实现了对MVC的一点想法。所以拿出来大家给参考一下。申明:不是典型的MVC

在这里我参考了Web.Py的一些做法,首先我们将Url当作一种资源,一个典型的Url,如下:
http://www.x.com/Index/view/2007/10/21
我们将从/Index/Topic/2007/10/21开始的的部分看作是有语义的,这里将Index映射到Controller类Index,Topic则表示这一次调用的行为,也就是调用Index类的Topic方法。
后面的/2007/10/21则是参数。而这些参数作为View方法的参数被传递给Controller,也就是这里Topic方法可以重载,如果找不到参数相对应的方法就直接调用没有参数的Topic方法。
Index类被作为Controller,至于View,随便了,可以直接用StringTemplate或者其他任何模板引擎,图方便的话直接Redirect到ASPX页面也行。
使用的方法:
首先Copy SpectraAction.DLL到bin目录。然后在Web.Config里添加:
  <configSections>
    <sectionGroup name="SpectraAction">
      <section name="Common" type="System.Configuration.SingleTagSectionHandler"/>
      <section name="Urls" type="System.Configuration.DictionarySectionHandler"/>
    </sectionGroup>
  </configSections>
  <SpectraAction>
    <Common Base="/TestSpectra" DefaultAction="Proccess" Assembly="" />
    <Urls>
      <add key="/index" value="Controller.Index"/>
    </Urls>
  </SpectraAction>

在Url里面的项就是注册Url到Controller的映射关系的。Common里的Base定义了Url的基础,因为在很多时候在根下有一些目录比较特殊,为了不影响这些目录,所以设置了这个参数用来设置一个基础来避开。所以这里要从 /TestSpectra之后的部分才开始具备语义。
然后就是实现Controller.Index这个类:
 1namespace Controller
 2{
 3    public class Index:MasterController
 4    {
 5        public Index()
 6        {
 7            //
 8            // TODO: 在此处添加构造函数逻辑
 9            //
10        }

11        public void Proccess()
12        {
13            this.AppendText("Test");
14        }

15        public void Proccess(string A)
16        {
17            this.AppendText("Test"+A);
18        }

19    }

20}

最后我们在浏览器里输入 http://localhost/TestSpectra/Index
这个时候输出 Test 因为设置了默认的行为,所以自动调用了Proccess方法。
如果输入 :
http://localhost/TestSpectra/Index/Proccess/ActionA/
这个时候就会调用void Proccess(string A)这个方法,输出了字符串TestActionA

就是这个样子咯,模型的话随便什么都行,视图的话随便用什么模板引擎都行

posted on 2007-10-21 19:53 亚历山大同志 阅读(2856) 评论(18)  编辑 收藏 所属分类: 随笔

评论

#1楼 [楼主] 2007-10-21 20:05 亚历山大同志      

忘记了一点,还需要注册一个HttpModule:}   回复  引用  查看    

#2楼  2007-10-22 08:30 aspnetx      

所要源代码的免了,3个小时的急就章实在是乱得可以,既没有好的架构,也没有任何代码质量可言,主要是实现了对MVC的一点想法。所以拿出来大家给参考一下。申明:不是典型的MVC


------
进来看到这句感觉腰差点没被闪了一下.
继续往下看   回复  引用  查看    

#3楼  2007-10-22 09:32 禾口王      

asp.net 目前不是还不支持没有扩展名的url的重写吗?
类似http://www.x.com/Index/view/2007/10/21 这类不包含扩展名的url怎么交给asp.net来处理?   回复  引用  查看    

#4楼  2007-10-22 09:45 marxTen      

@禾口王
可以用ISAPI来重写~   回复  引用  查看    

#5楼  2007-10-22 09:48 Clark Zheng      

@禾口王
新推出的asp.net mvc模型里好象集成了url重写机制,不需再做一个httpmodule   回复  引用  查看    

#6楼 [楼主] 2007-10-22 09:52 亚历山大同志      

@禾口王
理论性研究而已,再说不包含扩展名的url也是IIS的问题,修改一下带扩展名也不是不可以的撒。   回复  引用  查看    

#7楼 [楼主] 2007-10-22 10:08 亚历山大同志      

@亚历山大同志
By the way 在IIS里面增加通配符映射就可以把所有的请求交给ASP.NET去处理了,只要及时的判断不处理的情况对性能影响不大   回复  引用  查看    

#8楼  2007-10-22 10:15 henry      

实现一个统一分流的page,所有aspx都指向这个page再加个PropertyBag.
mvc就出来了...
  回复  引用  查看    

#9楼 [楼主] 2007-10-22 10:17 亚历山大同志      

@henry
最近你的想法很激进啊:}   回复  引用  查看    

#10楼  2007-10-22 10:30 henry      

@亚历山大同志
有点....
不过感觉page对象作为Controller和business Logic的adapter不错的.
用户只关心view和business Logic剩下的工作通过配置由adapter自动完成.   回复  引用  查看    

#11楼 [楼主] 2007-10-22 10:39 亚历山大同志      

@henry
我其实主要是非常厌恶aspx文件和VS的糟糕的html编辑能力,随便那里怎么碰一下就弄出一大堆的Style属性出来,人都要气死   回复  引用  查看    

#12楼  2007-10-22 10:44 henry      

@亚历山大同志
同感觉...   回复  引用  查看    

#13楼  2007-10-22 11:19 kiler      

@亚历山大同志

vs设计html确实很烂,我一般用dreamweaver改页面。

webform架构对公司的最大贡献就是把美工省了,所以我们这些程序员惨了,
  回复  引用  查看    

#14楼  2007-10-22 17:21 徐少侠      

--引用--------------------------------------------------
亚历山大同志: @henry
我其实主要是非常厌恶aspx文件和VS的糟糕的html编辑能力,随便那里怎么碰一下就弄出一大堆的Style属性出来,人都要气死
--------------------------------------------------------
同感   回复  引用  查看    

#15楼  2007-10-23 08:34 橘子&猪      

--引用--------------------------------------------------
徐少侠: --引用--------------------------------------------------
亚历山大同志: @henry
我其实主要是非常厌恶aspx文件和VS的糟糕的html编辑能力,随便那里怎么碰一下就弄出一大堆的Style属性出来,人都要气死
--------------------------------------------------------
同感
--------------------------------------------------------
严重同感...我甚至因为害怕乱出Style,多数时间都直接html,表格也是如此.   回复  引用  查看    

#16楼  2007-10-26 12:58 stonezhu      

--引用--------------------------------------------------
橘子&amp;猪: --引用--------------------------------------------------
徐少侠: --引用--------------------------------------------------
亚历山大同志: @henry
我其实主要是非常厌恶aspx文件和VS的糟糕的html编辑能力,随便那里怎么碰一下就弄出一大堆的Style属性出来,人都要气死
--------------------------------------------------------
同感
--------------------------------------------------------
严重同感...我甚至因为害怕乱出Style,多数时间都直接html,表格也是如此.
--------------------------------------------------------


同感,一般直接用editplus写html,不敢用vs来搞,ds也是用来看看效果,且ds也会乱加东东。   回复  引用  查看    

#17楼  2007-10-26 16:45 随机      

--引用--------------------------------------------------
stonezhu: --引用--------------------------------------------------
橘子&amp;amp;猪: --引用--------------------------------------------------
徐少侠: --引用--------------------------------------------------
亚历山大同志: @henry
我其实主要是非常厌恶aspx文件和VS的糟糕的html编辑能力,随便那里怎么碰一下就弄出一大堆的Style属性出来,人都要气死
--------------------------------------------------------
同感
--------------------------------------------------------
严重同感...我甚至因为害怕乱出Style,多数时间都直接html,表格也是如此.
--------------------------------------------------------


同感,一般直接用editplus写html,不敢用vs来搞,ds也是用来看看效果,且ds也会乱加东东。
--------------------------------------------------------

这个是相当相当郁闷啊,
而且它为了表示可以支持W3C校验,自动加上DTD的校验信息,可是连地址都不全,加了=米有加,还要手工改,那个汗啊~~~
真的希望MS能把这些细节再多考虑一下,不然开发起来真的不顺手啊~   回复  引用  查看    

#18楼  2007-11-16 10:02 文's sky      

VS2005的HTML编辑器是我见过最棒的了
DW已经完全被我抛弃,因为它生成很多垃圾代码,改起来都很困难,HTML代码智能感知也完全比不上VS2005
不过MS我都是手写XHTML的,可能觉得VS2005更喜欢一点= =   回复  引用  查看    

导航

公告

鉴于很多TX投诉黑色背景杀伤眼球,遂换个容易阅读的
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

统计

与我联系

搜索

 

常用链接

留言簿(28)

我参加的小组

我的标签

随笔分类(82)

随笔档案(82)

相册

朋友的Blog

同事的Blog

最新随笔

积分与排名

最新评论

  • 1. re: 鬼吹灯-漫谈大型网站的架构
  • 图是好画,开发起来并不容易;
  • --三千
  • 2. re: Why .NET Sucks?
  • @亚历山大同志 我认为只要能快速开发出客户需要的服务或应用,快速的为客户实现价值,.net也没什么问题啊。 至于钱钱没有做java的拿的多,一般情况而言两种原因:一、java本身开发难度大、实现繁琐,...
  • --网际浪人
  • 3. re: Why .NET Sucks?
  • --引用-------------------------------------------------- 问天: @Kai.Ma 我找不到开源并且成熟的pop3/imap client,我要求不高...
  • --Ivony...
  • 4. re: Why .NET Sucks?
  • @Kai.Ma我找不到开源并且成熟的pop3/imap client,我要求不高,gb2312/utf 8中文不乱码,能解outlook发的附件就成。这么些年了,.net东西慢慢是有了,但数量、质量无...
  • --问天
  • 5. re: Why .NET Sucks?
  • @问天
    .Net下开源且成熟的东西找找还是蛮多的。:)
  • --Kai.Ma

阅读排行榜

评论排行榜

60天内阅读排行