2021-02-19 15:56

菜鸟学ASP.NET MVC4系列之控制器和视图

wanmatea

其它

(1418)

(0)

收藏

blog

ASP.NET MVC 是微软官方提供的以MVC模式为基础的ASP.NET Web应用程序(Web Application)框架,它由Castle的MonoRail而来。

MVC 是三种 ASP.NET 编程模式中的一种。

       MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。

    (1)Model(模型)表示应用程序核心(比如数据库记录列表)。

    (2)View(视图)显示数据(数据库记录)。

    (3)Controller(控制器)处理输入(写入数据库记录)。

       MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。       

       首先我们来新建一个ASP.NET MVC4应用程序:

640.jpg

结构如下图所示:

640.png

对各个文件夹的说明:

(1)App_Data 文件夹用于存储应用程序数据。   

(2)Content 文件夹用于存放静态文件,比如样式表(CSS 文件)、图标和图像。 

(3)Controllers 文件夹包含负责处理用户输入和相应的控制器类。

(4)Models 文件夹包含表示应用程序模型的类。模型控制并操作应用程序的数据。

(5)Views 文件夹用于存储与应用程序的显示相关的 HTML 文件(用户界面)。

(6)Scripts 文件夹存储应用程序的 JavaScript 文件。

 下面就主要的Controller、Model和View做出说明。

一、控制器

1、描述

       控制器(Controller)主要负责响应用户的输入,并在响应时修改模型(Model)。通过这种方式,控制器主要关注的是应用程序流、输入数据的处理,以及对相关视图(View)输出数据的提供。

2、简单控制器

       新建一个ASP.NET MVC4应用程序,然后我们创建一个控制器 HomeController

图片

直接按F5运行程序即可看到index试图中的内容,此时浏览器的URL为:

       http://localhost:端口号,或者修改浏览器地址为:

       http://localhost:端口号/home

       http://localhost:端口号/home/index

       程序默认会托管在VS2013自带的IIS中,网址为http://localhost:端口号

3、控制器操作中的参数

       前面的例子Action中返回的是字符串常量,下面就让它们通过相应URL传进来的参数动态地执行操作。

       在这里,我们使用HttpUtility.HtmlEncode来预处理用户输入。这样就能阻止用户用链接向视图中注入JavaScriptd代码或HTML标记,比如/home/sayhello?content=。

4、路由---将URL映射到动作

       框架是如何知道将URL映射到一个特定的控制动作的?答案就在Global.asax文件的RegisterRoutes方法中。该方法定义了将一个URL模式映射到控制器或动作的路由。

在RegisterRoutes方法上按F12,转到该方法的定义,如下:

5、控制器总结

(1)不需要做任何配置,只需浏览到/控制器/动作URL即可;

(2)控制器是一个非常简单的类,继承自System.Web.Mvc.Controller类;

(3)用控制器在浏览器中显示文本,没有用到View或Model。

二、视图

1、作用

       提供用户界面。一个控制器可以对应多个试图,一个视图可以被多个控制器使用。

       在Action名上右键→添加试图→View1。

2、指定视图

图片

3、ViewData和ViewBag的区别于联系

       在前面的例子中,使用了ViewBag的Message属性从控制器往视图传递数据,ViewData是一个特殊的字典类,可以按标准语法进行使用:ViewData["CurrentTime"]=DateTime.Now;

       这种语法也可以用动态封装器ViewBag:ViewBag.CurrentTime=DateTime.Now;

注意:

(1)尽管只有当要访问的关键字是有效的C#标识符是,ViewBag才起作用,如在ViewData["Key With Spaces"]就不能使用ViewBag访问,编译不通过;

(2)动态值不能作为一个参数传递给扩展方法。因为C#编译器为了选择正确的扩展方法,在编译是必须知道每个参数真正类型。如:@Html.TextBox("name",ViewBag.Name)不会编译通过,可以改为:

       ①@Html.TextBox("name",ViewData["Name"])

       ②@Html.TextBox("name",(string)ViewBag.Name)

4、强类型视图

       现在需要编写一个显示Album实例列表的视图。一简单的方法就是通过ViewBag属性把那些Album实例添加到视图数据字典中,然后在视图中迭代他们。

(1)首先,在Models文件夹下新建一个Album类,为了简单起见,只定义一个Title属性。

图片

(2)控制器

图片

(3)视图

       在List上右键→添加视图。

640 (1).png

运行效果:

图片


0条评论

点击登录参与评论