`

在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

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

相关推荐

    Asp.Net MVC案例教程

    Asp.Net MVC案例教程 Asp.Net MVC案例教程 Asp.Net MVC案例教程 Asp.Net MVC案例教程 Asp.Net MVC案例教程 Asp.Net MVC案例教程

    Asp.Net mvc 3

    Asp.Net mvc 3,Asp.Net mvc 3,Asp.Net mvc 3,Asp.Net mvc 3,Asp.Net mvc 3,Asp.Net mvc 3,Asp.Net mvc 3,Asp.Net mvc 3,Asp.Net mvc 3

    asp.net MVC4 CMS

    asp.net MVC4 CMS 完整的源代码,学习和提高asp.net mvc4可以参考一下。

    AngularJS开发ASP.NET MVC

    AngularJS 开发 ASP.NET MVC.

    ASP.NET MVC项目实例

    ASP.NET MVC作为微软官方的.NET平台下MVC解决方案,自诞生起就吸引了众多.NET平台开发人员的眼球。ASP.NET MVC从一开始的设计思路就与Struts不同,它的映射是利用路由配置而非xml,从而大大降低了开发复杂度,并且比...

    Asp.net MVC快速开发框架源码 mvc+Bootstrap

    Asp.net MVC快速开发框架源码 mvc+Bootstrap 框架使用场景:OA、ERP、BPM、CRM、WMS、TMS、MIS等业务管理系统及后台系统

    ASP.net MVC3 中文教程

    ASP.net MVC3 中文教程ASP.net MVC3 中文教程ASP.net MVC3 中文教程ASP.net MVC3 中文教程

    ASP.NET MVC5

    ASP.NET MVC5 高清完整版,适合新手学习,理解MVC架构

    ASP.NET MVC源码

    ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。 可以把WebApi看成Asp.Net项目类型中的一种,其他项目类型诸如我们熟知的WebForm项目,Windows窗体项目,控制台应用程序等。 ...

    dwz框架 asp.net mvc3

    dwz框架 asp.net mvc3;dwz框架 asp.net mvc3;dwz框架 asp.net mvc3

    asp.net Mvc项目中使用FastReport.NET

    asp.net Mvc项目中使用FastReport.NET的说明

    【ASP.NET编程知识】ASP.NET MVC 开发微信支付H5的实现示例(外置浏览器支付).docx

    【ASP.NET编程知识】ASP.NET MVC 开发微信支付H5的实现示例(外置浏览器支付).docx

    ASP.NET MVC项目源代码设计资料

    ASP.NET MVC项目源代码设计资料

    基于ASP.NET MVC项目实例

    基于ASP.NET MVC框架的学习项目,包含MVC的框架的设计思路,通俗易懂学习MVC框架,需要VS2010及以上版本打开,初学者可以快速理解MVC的构思以及开发。

    asp.net mvc博客Blog源码

    这是一个用ASP.NET MVC写的Blog示例程序,可以进行用户注册、分类管理等。 可以对Blog进行评论使用了Asp.Net MVC框架(MVC框架),该框架可以更好的分离代码和UI部分

    ASP.NET MVC概述

    ASP.NET MVC 框架是一个 可测试性非常高的轻型演示框架,(与基于 Web 窗体的应用程序一样)它集成了现有的 ASP.NET 功能,如 母版页和基于成员资格的身份验证。MVC 框架在 System.Web.Mvc 程序集中定义。

    ASP.NET MVC插件 MVC 2.0

    ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0

    基于ASP.NET MVC 2 的小程序

    学习ASP.NET编的小程序,展示了用MVC2开发网站的简单流程,注解详细,易于理解。打开即可使用。

    asp.net mvc返回多个model

    asp.net mvc多个model返回

    ASP.NET MVC4

    ASP.NET MVC4,全英文的教程,大家英语好的可以原汁原味的看看

Global site tag (gtag.js) - Google Analytics