看到这里应该知道上文中 SwiftRouteTable 、 SwiftRouteCollection 、 SwiftRoute 三个类的用处了吧,原来在这里。IRouteHandler的实例new MvcRouteHandler()也是在这里写入的。
然后启动项目,我们默认访问:16792/Home/bootstrapTest这个地址,我们来看具体的过程:
1、启动项目,首先进到全局配置文件的Application_Start()方法这里告诉我们在SwiftRouteTable.Routes这个全局静态变量里面,已经保存了路由规则、默认路由、RouteHandler对象三个重要的信息。这三个信息后面都会用到。
2、然后请求进到UrlRoutingModule里面,取SwiftRouteCollection的值:我们看到,这里的SwiftRouteCollection的值就是在全局配置文件里面配置的类型。
3、然后请求进到SwiftRouteCollection类的GetRouteData()方法里面。这个方法的作用很明显,就是解析当前的请求的url,从中获取当前的controller、action、参数等信息。这个方法执行完之后得到的SwiftRouteData对象,结果如下:博主对Swift.MVC框架进行了简单的扩展,使得框架支持action方法的重载。比如我们在HomeController里面定义了如下方法
public class HomeController : Controller { public void Index() { HttpContext.Current.Response.Write(); } public void Index(string id) { HttpContext.Current.Response.Write(+ id); } public void Index(string aa, string bb) { HttpContext.Current.Response.Write(); } public void BootstrapTest() { ..... } public void BootstrapTest(int id) { ..... } }
1、请求默认路由地址::16792/
2、请求地址::16792/Home/index?id=1
3、请求地址::16792/Home/index?aa=kate&bb=lucy
当然上文封装都是只是通过url传递参数的情况,等有时间可以扩展下,使得支持通过post请求传递参数。
六、总结通过上一篇和这一篇,我们基本上把MVC的核心原理涉及到的技术都重写了一遍,等有时间再扩展一个自己的”View“,加上模型验证,数据绑定,我们的Swift.MVC就算是一个相对完整的微型MVC框架了。当然,此框架仅仅是从学习理解MVC的原理层面去实现的,如果要应用于项目,还要考虑很多东西,不论如何,是个好的开始,有时间继续完善。源码地址。
如果你觉得本文能够帮助你,可以右边随意 打赏 博主,也可以 推荐 进行精神鼓励。你的支持是博主继续坚持的不懈动力。
本文原创出处:
欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利