在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这个类:
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的小东西的更多相关文章
- ubuntu下做柯老师lab19-lab20实验问题总结
前两篇文章告诉了大家如何将无线封包传输遗失模型和myevalvid添加到ns2.35中,已经成功验证了,这个没有问题.但是本人在做lab19和lab20实验时又发现了一些关于myevalvid工具集的 ...
- 在ASP.NET Core中实现一个Token base的身份认证
注:本文提到的代码示例下载地址> How to achieve a bearer token authentication and authorization in ASP.NET Core 在 ...
- ubuntu下格式化内存当硬盘使的小实验
内存虚拟硬盘(ramdisk)是指通过软件技术,将物理内存进行分割,将一部分内存通过虚拟技术转变为硬盘以较大幅度提升计算机数据读取速度和保护硬盘. 在ubuntu下的dev下有ram相关的文件,这些文 ...
- asp.net下cookie 的基础使用
cookie作为在B/S开发中经常被使用到的东西,asp.net必然提供了现成的东西给我们使用. 就是这个对象:HttpCookie,当然了,对于asp.net来说,Request和Response中 ...
- HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象
HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象 通过前面对“HttpController的激活”的介绍我们已经知道了ASP.NET Web API通过Ht ...
- 关于在链路聚合下做smart,monitor link的转发测试
关于在链路聚合下做smart,monitor link的转发测试 这次又要开始瞎折腾了.没事找事了.毕竟我还是很无聊的: 这个实验主要要涉及到以下几个方面: 1.gvrp的应用: 2.Smart Li ...
- ASP.NET下MVC设计模式的实现
[转载]MVC架构在Asp.net中的应用和实现 转载自:http://www.cnblogs.com/baiye7223725/archive/2007/06/07/775390.aspx 摘要:本 ...
- ASP.NET下跨应用共享Session和使用Redis进行Session托管
在之前的博客中,我说到了Session的共享问题,其中说到了Web Farm和Web Garden两种情况下Session的处理.在ASP.NET提供的Session处理方法中,有以下四种模式: 1. ...
- ASP.NET Core 3.0 一个 jwt 的轻量角色/用户、单个API控制的授权认证库
目录 说明 一.定义角色.API.用户 二.添加自定义事件 三.注入授权服务和中间件 三.如何设置API的授权 四.添加登录颁发 Token 五.部分说明 六.验证 说明 ASP.NET Core 3 ...
随机推荐
- 【Linux常识篇(3)】文件及文件夹的ctime atime mtime的含义详解
首先可以使用stat 命令来查询文件的inode信息,其中包括ctime atime mtime [root@localhost ~]# stat sort2.txt File: 'sort2.txt ...
- 【mysql的编程专题①】流程控制与其他语法
流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中; 如果用在select上就会随着query出来的row来隐式迭代; 注释与语句结束符 语句结束符 默认有两 ...
- MIT算法导论——第一讲.Analysis of algorithm
本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. ...
- 微信开发之——Php批量生成带参数的二维码
带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧. 具体接口说明请参见,微信公众平 ...
- 32. Longest Valid Parentheses
题目: Given a string containing just the characters '(' and ')', find the length of the longest valid ...
- SQL Server数据库多种方式查找重复记录
摘要:SQL Server是一个关系数据库管理系统,SQL Server数据库的应用是很多的,SQL Server数据库赢得了广大用户的青睐,本文将主要为大家介绍关于SQL Server数据库中查找重 ...
- 深度神经网络如何看待你,论自拍What a Deep Neural Network thinks about your #selfie
Convolutional Neural Networks are great: they recognize things, places and people in your personal p ...
- C#通过代码注册COM组件
using System; using System.Diagnostics; using Microsoft.Win32; namespace ChuckLu.Utility { public cl ...
- Hibernate与Jpa的关系,终于弄懂
我知道Jpa是一种规范,而Hibernate是它的一种实现.除了Hibernate,还有EclipseLink(曾经的toplink),OpenJPA等可供选择,所以使用Jpa的一个好处是,可以更换实 ...
- 查看Linux服务器网络状态
ifconfig 用来显示所有网络接口的详细情况的,如:ip地址,子网掩码等. ethx是以太网网卡的名称. 配置文件在/etc/sysconfig/network-scripts/ifcfg-eth ...