欢迎光临散文网 会员登陆 & 注册

十分钟就能学会的ASP.NET MVC 5教程

2023-01-22 23:19 作者:CSDN首席喷子  | 我要投稿

ASP.NET MVC是在ASP.NET基础上,应用模型-视图-控制器(Model-View-Controller,MVC)概念的Web框架。所谓的MVC,是一种软件设计模式,目的是将逻辑代码和界面代码分开,提升代码可维护性的技术,包括以下几个部分:

(1)模型:模型是界面数据的抽象表示,包括界面上的数据和对应的操作逻辑。而对于这些数据如何表示,模型并不理会。

(2)视图:视图是呈现给用户的界面,可以是HTML、WinForm等。模型从控制器接收来自模型的数据用以渲染。

(3)控制器:控制器接收视图传来的操作指令,调用操作所需的模型,根据结果渲染对应的视图。


图1  ASP.NET MVC结构示意图

相对于模仿WinForm的WebForm,MVC更符合网页的结构,理解起来要更容易。

1     工程结构

ASP.NET MVC的工程结构是定死的,如果不是这个结构,应用就没法执行:

(1)首先必须得包含一个配置文件Web.config,并导入System.Web.Mvc程序集:


(2)包含一个主应用程序文件Global.asax,其控制MVC路由。

(3)包含一个名为Controllers的文件夹,其下放置控制器类定义,名字必须都是xxxController。

(4)包含一个名为Views的文件夹,包含视图文件,且必须位于对应的控制器名文件夹下,比如DefaultController有一个名为Index的视图,文件夹结构就是Views/Default/Index.aspx。

2  路由

从一个普通的ASP.NET程序变成一个MVC程序需要在Global.asax的Application_Start方法中注册路由,代码如下:

其创建了一个名为Default的路由表项,内容为"{controller}/{action}/{id}",这个内容会被MVC程序集自动映射到指定的控制器。默认路由为/Home/Index/。

3  控制器

控制器定义全部位于controllers文件夹下,其所有的公有方法都对应一个视图。如果不想被视为视图方法,需将方法修饰符改为protected或private;也可为方法添加NonAction属性。控制器必须继承自System.Web.Mvc.Controller类,视图方法的签名一般是

public ActionResult ViewName()

Controller类有一个名为View的静态方法,能够渲染指定的视图。如果View方法没有参数,那么它返回ViewName.aspx对应的视图输出。如有参数,则第一个参数为希望输出的视图名称,第二个可选参数为强类型视图的模型。

4     视图

ASP.NET MVC的视图是一个后缀名为aspx的模板。控制器在视图方法中,可以访问一个名为ViewData的词典,以向视图中添加数据。视图代码如下所示:

可见ViewData原封不动地传入了ViewPage类,可以像WebForm中一样访问其内容,但是这种方法并没有完全体现“模型”对视图的抽象作用。更好的方法是建立视图模型类,然后使用强类型:

可以在控制器中,根据用户传入的数据,生成合适的视图模型,渲染对应的视图。模型对象使用Model成员变量获取引用。

注意,如果使用强类型视图,必须在Views文件夹下面再放置一个web.config配置文件,内容为:

5  异步

如果要调用一些访问时间很长的操作,必须使用异步以减少CPU占用。ASP.NET MVC 4及以上版本支持基于Task的异步操作,要求控制器必须继承自AsyncController类,且视图名称的后面必须加上Async才能被识别,如:

在调用GetStudent的过程中,IIS服务线程将被重用以服务其它客户端请求,函数调用会委托给其它CLR线程,从而提升性能。

6  RESTful

Controller有一个名为Json的静态方法,可以将具有Serializable属性的object对象序列化成JSON返回客户端,从而构建REST风格服务:

如果要构建基于XML的REST服务,则必须自行扩展一个ActionResult类:


十分钟就能学会的ASP.NET MVC 5教程的评论 (共 条)

分享到微博请遵守国家法律