Asp.Net MVC基础

本文深入探讨了MVC(Model-View-Controller)设计模式的原理及其在Asp.NetMVC项目中的应用。详细介绍了MVC各组成部分的作用,以及如何在Asp.NetMVC中实现Controller、Model和View的交互,包括请求处理流程、ActionFilter的使用、HtmlHelper和UrlHelper的介绍。

  1. MVC是什么?

  MVC是Model-View-Control的简称,它是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,它强制性的使应用程序的输入、处理和输出分开,使MVC应用程序被分成三个核心部件:模型(Model)、视图(View)、控制器(Controller)。它们各自处理自己的任务。其中,

    Model:用于存储数据的组件。

    View:根据Model数据进行数据内容展示的组件。

    Control:接受并处理用户指令。操作Model,选择一个合适的View并输出内容。   

  MVC强制性的把web应用程序分成M V C 3个部分,由于各个部分相对独立,大大降低了程序的耦合性,更利于web项目的分工协作开发,也提高了程序的可测试性。同时多个View可以共享一个Model,从而提高了程序的可重用性和可适用性。  

2010071621411336.jpg

 

 

  2. Asp.Net MVC 项目中这3个部件被放在哪里?

  在Visual Studio中创建一个MVC Project 就一目了然了。

2010071622284297.jpg

 

  3. Asp.Net MVC中的Controller是怎么选择Model和View的呢?

  当一个URL请求来到时,asp.net mvc handler会把它交给一个Controller,Controller从数剧源得到一些数据,并运用业务逻辑规则得到一个Model,再把这个Model传递给View,通过View把页面呈现给用户。

  每个controller类中都有一些返回值是ActionResult的Method,这些Method被称作Action。Mvc Handler会根据请求的URL选择一个相应的controller/action来执行。在action中,我们从数据源取得一些数据,并根据业务规则得到一个Model,并在action里面执行code:ViewData.Model = myModel;,这样这个Model就会被保存在返回的ActionResult里,然后ActionResult.ExecuteResult()方法被执行。

  在ExecuteResult方法中,调用IViewEngine.FindView()来得到一个ViewEngineResult,这里ViewEngineResult.View(IView对象)一般代表一个具体的页面,如一个.aspx页面。调用ViewEngineResult.View.Render(new ViewContext(...,ViewData,...))方法,就可以把含有Model的View展示给用户了。

  既然Asp.Net Mvc中抽象除了IView 和 IViewEngine这2个接口,那么我们就可以自己实现这2个接口。这样IView除了可以和磁盘上的.aspx文件对应外,还可以代表一个.txt文件,或者.pdf文件,或者...,只要我们实现了IView.Render()就行了。对于IViewEngine,只需要实现IViewEngine.FindView()就行了,于是我们就有了改变具体文件存放路径的权利了。

 

  4.请求是怎么被交给Mvc Handler的呢?又是怎么选择正确的action的呢?

  我们可以看一下Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config文件,里面配置了一个叫UrlRoutingModule的HttpModule。在asp.net mvc project 中,这个module会在asp.net管道的PostResolveRequestCache事件中生成MvcHandler,并用他代替默认的asp.net handler来处理请求。

  选择action的关键点在Global.asax.cs文件中。里面有一个方法RegisterRoutes(RouteTable.Routes),RouteTable中存放的是一些路由规则,MvcHandler正是根据他们来匹配URL和Controller/Action的。

 

下面是一篇博客中总结的asp.net mvc的执行流程:

链接:张子秋的博客 http://www.cnblogs.com/zhangziqiu/archive/2009/03/11/Aspnet-MVC-3.html

 =============================================================================================

1. 页面处理流程

发送请求 –> UrlRoutingModule捕获请求 –> MvcRouteHandler.GetHttpHandler() –> MvcHandler.ProcessRequest()

2.MvcHandler.ProcessRequest() 处理流程:

使用工厂方法获取具体的Controller –> Controller.Execute() –> 释放Controller对象

3.Controller.Execute() 处理流程

获取Action –> 调用Action方法获取返回的ActionResult –> 调用ActionResult.ExecuteResult() 方法

4.ActionResult.ExecuteResult() 处理流程

获取IView对象-> 根据IView对象中的页面路径获取Page类-> 调用IView.RenderView() 方法(内部调用Page.RenderView方法)

通过对MVC源代码的分析,我们了解到Controller对象的职责是传递数据,获取View对象(实现了IView接口的类),通知View对象显示.

View对象的作用是显示.虽然显示的方法RenderView()是由Controller调用的,但是Controller仅仅是一个"指挥官"的作用, 具体的显示逻辑仍然在View对象中.

==========================================================================================

 

  5. Asp.net MVC ActionFilter

  ActionFilter是MVC在action执行前后提供扩展的功能(在这里是一个AOP的概念),它可以用在页面压缩、缓存、错误处理等。ActionFilter需要继承自ActionFilterAttribute抽象类,并且覆盖需要使用的方法。 ActionFilterAttribute类中有四个可重的方法,分别是OnActionExecuting, OnActionExecuted, OnResultExecuting 和 OnResultExecuted。

  参见:(asp.net mvc学习)ASP.NET MVC ActionFilter的学习与使用

      6. System.Web.Mvc.HtmlHelper 和 System.Web.Mvc.UrlHelper

  参见: (asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用  和 (asp.net MVC学习)System.Web.Mvc.UrlHelper的学习与使用

 

一些讲解 asp.net mvc的博文:

http://www.cnblogs.com/firstyi/archive/2008/05/08/1188545.html

http://www.cnblogs.com/zhangziqiu/archive/2009/02/27/ASPNET-MVC-1.html

http://www.cnblogs.com/longgel/category/237654.html

http://www.cnblogs.com/chsword/archive/2008/03/10/dotnetmvcframework.html

 

 

转载于:https://www.cnblogs.com/evan_9/archive/2010/07/17/1779320.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值