学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器

MVC全称是Model View
Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,用一种业务逻辑和数据显示分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。MVC是一种具有可测试性和易于维护的应用程序开发模式。

基于MVC的应用程序应该包含以下内容:

?模型:表示应用程序核心,是该应用程序中用来进行校验、执行业务逻辑的数据类,业务实体对象。

?视图:表示显示数据,是应用程序中处理数据显示的部分,是该应用程序动态生成HTML响应的模板文件。

?控制器:表示处理输入,是应用程序中处理用户交互的部分,是该应用程序处理浏览器传入的请求,从数据库中读取数据,然后指定视图模板返回给浏览器的响应。

创建我的第一个控制器类

首先,在Visual
stdio中的“解决方案资源管理器”中,选中Controllers”文件夹,单击右键,在弹出菜单中选择“添加-->控制器”。如下图。

其次,Visual
Studio会弹出的“添加控制器”对话框,在对话框的“控制器名称”文本框中输入“HelloWorldController”,在“模板”下拉框中选择默认模板“空MVC控制器”,然后单击“添加”。如下图。

第三,当鼠标点击“添加”之后,Visual
Studio会创建一个.cs文件 ,文件名为HelloWorldController.cs。如下图。

第四,用下面的代码替换文件中的默认代码。


public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()

{

return "这是我的一个欢迎您来到ASP.NET MVC世界的 <b>控制器</b>的默认方法 !!!";

}

//
// GET: /HelloWorld/Welcome/
public string Welcome()

{

return "这是一个欢迎您来到ASP.NET MVC世界的控制器中的指定方法...";

}
}

我的这个控制器中的Index与Welcom方法都只是返回一个字符串。

第五,在填写完代码之后,运行应用程序(按F5或Ctrl+
F5)。如下图。

Visual Studio会启动IIS
Express,同时运行Visual Studio中Web应用程序,然后Visual
Studio会启动默认浏览器并打开应用程序的首页。在已启动的浏览器的地址栏中的地址后面加上“HelloWorld”
(例如,如下图中,它的http://localhost:36878/HelloWorld)。浏览器就会去调用新的页面,页面中显示的内容如下图。由于我在Index方法中,直接返回的是字符串,所以浏览器中显示的就是我在代码中所写的一串中文。

ASP.NET
MVC根据传入的不同的URL去调用不同的控制器类以及控制器类中的不同的方法。ASP.NET MVC默认的URL路由格式如下:

/[Controller]/[ActionName]/[Parameters]

以上格式的URL,其中第一部分决定了由什么控制器类来执行,就本例来说HelloWorld映射到HelloWorldController类。
URL的第二部分决定了要执行的控制器类中的哪个方法,就本例来说HelloWorld/Index会让HelloWorldController类的Index方法执行。请注意,Index是ASP.NET
MVC控制器类的默认方法,如果在没有指定具体方法的情况下使用,将调用控制器上的默认方法(Index)。

在浏览器地址栏中输入http://localhost:36878/HelloWorld/Welcome,浏览器会返回以下字符串“这是一个欢迎你来到ASP.NET
MVC世界的控制器的指定方法......”。如下图。

第六,我要通过URL传递一些参数给控制器,来看我是如何修改的(例如,/HelloWorld/Welcome?name=dotnet菜园&numtimes=9)。下面的方法是用参数来改变应用程序的输出内容。代码如下所示。请注意,该代码使用C#可选参数的功能,当numTimes没有参数传递过来时,numTimes参数默认为1。


        public string Welcome(string name, int numTimes = 1)

{

return HttpUtility.HtmlEncode("欢迎 " + name + string.Format(",第{0}次来到ASP.NET MVC的世界! " , numTimes));

}

直接运行程序,会报一个以下错误信息。如下图。原来在ASP.NET
MVC的控制器类中默认是不支持方法重载的。如果希望方法重载要使用httpverbs或是重写actionexcuting方法

我们把Welcome方法注释掉,然后按F5来运行应用程序并在浏览器中输入http://localhost:36878//HelloWorld/Welcome?name=dotnet菜园&numtimes=9。您可以输入不同的name和numtimes值。ASP.NET
MVC会自动从URL请求中获取相应的参数值。

在这个例子中,控制器一直在做MVC中的“VC”部分 -
也就是,视图和控制器的工作。本示例中的控制器直接返回一个HTML字符串。按照MVC的理论来说,控制器不应该直接返回HTML字符串,因为这样做会让代码变得非常繁琐,具体的呈现方式应该由视图去做,而不应该由控制器去做,在下一次的文章中再来介绍视图。

时间: 2024-08-19 10:26:28

学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器的相关文章

学习ASP.NET MVC(七)——我的第一个ASP.NET MVC 查询页面

在本篇文章中,我将添加一个新的查询页面(SearchIndex),可以按书籍的种类或名称来进行查询.这个新页面的网址是http://localhost:36878/Book/ SearchIndex.该页面中用一个下拉框来显示种类,用一文本框让用户输入书籍的名称.当用户在点击“查询”按钮之后,页面会被刷新,显示用户的查询结果.控制器会根据用户提交查询参数,由动作方法(Action Motehd)去解析用户提交的参数值,并使用这些值来查询数据库. 第一步,创建SearchIndex查询页面    

学习ASP.NET MVC(四)——我的第一个ASP.NET MVC 实体对象

今天我将根据数据库中的表结构添加一些类.这些类将成为这个ASP.NET MVC应用程序中"模型"的一部分.       我们使用Entity Framework(实体框架)来定义和使用这些模型类,并且访问数据库.实体框架 (EF) 是一种对象关系映射机制,支持 .NET 开发人员使用特定对象来处理关系数据.它消除了开发人员通常需要编写大部分数据访问代码的工作,所以也称为代码优先开发模式.使用实体框架 ,可以将自定义数据类与数据模型一起使用,而无需对数据类本身进行任何修改. 这意味着可以

学习ASP.NET MVC(五)——我的第一个ASP.NET MVC CURD页面

在上一篇文章中我们已经创建了实体类,在这一篇文章中,我将创建一个新的控制器类——BookController,使用BookController对Books表中的数据进行CURD操作的方法,并使用视图模板在浏览器中显示所查询到的书籍数据信息. 一.添加控制器类 在Visual Studio 的“解决方案资源管理器”中右键单击Controllers文件夹,并创建一个新的BookController控制器类.如下图. Visual Studio 会弹出一个“添加控制器”对话框(如下图). 在对话框中填

学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序

首先运行Visual Studio Express 2012或Visual Web Developer2010 Express或Visual Studio2010/SP1.Visual Studio是一个集成开发环境. 可以使用两种方式来创建新项目. 1) 菜单"文件->新建-->项目"来新建项目. 2) 第二种方法是从开始页面中选择"新建项目",如下图. 创建第一个ASP.NET MVC应用程序 接下来创建我的第一个ASP.NET MVC应用程序,在创

学习ASP.NET MVC(六)——我的第一个ASP.NET MVC 编辑页面

在上一文章中由Entity Framework(实体框架)去实现了对数据库的CURD操作.在本篇文章中,主要是调试修改自动生成的动作方法和视图,以及调试编辑功能与编辑功能的Book控制器. 首先,在Visual Studio中运行一下上次的应用程序,通过浏览器访问http://localhost:36878/Book.将鼠标指针移到浏览器中的一个“Edit”链接上,就可以看到这个“Edit”指向的URL.如下图红框所示. “Edit” 链接通过Html.ActionLink方法在浏览中生成指向V

初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序

初入码田--ASP.NET MVC4 Web应用开发之一  实现简单的登录 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查 2016-07-29 再次之前,需要一台电脑(- ̄▽ ̄)-,以及Visual Studio 2013或者更高版本,SQL Sever数据库(暂时不用) 新建项目 下面会出现选择模板选项(我们选择的是MVC模板) 其中,在创建MVC模板时会有身份验证选项.可选择添加的文件夹和核心引用(Web Form和Web API)以及单元测试选项 身份验证分

学习ASP.NET MVC(三)——我的第一个ASP.NET MVC 视图

今天有幸被召回母校给即将毕业的学弟学妹们讲我这两年的工作史,看了下母校没啥特别的变化,就是寝室都安了空调,学妹们都非常漂亮而已..好了不扯蛋了,说下今天的主题吧.这些天我在深度定制语法高亮功能的同时发现了博客园提供的一些有意思的函数,甚至有几个博客园都没用到,我也不知道怎么才能触发那些功能..打开这个js就可以看到很多好用的东西了,虽然写的不怎么样,但是至少有这些功能. ps: 推荐安装一个代码格式化的插件,否则一坨看着蛋疼.比如第一个就是 log,方便调试.http://blog.csdn.n

AsMVC:一个简单的MVC框架的Java实现

当初看了<从零开始写一个Java Web框架>,也跟着写了一遍,但当时学艺不精,真正进脑子里的并不是很多,作者将依赖注入框架和MVC框架写在一起也给我造成了不小的困扰.最近刚好看了一遍springMVC的官方文档,对过去一段时间的使用做了一下总结,总结了一些MVC的使用需求,打算自己开坑写一个MVC框架,虽然是重复造轮子的过程,但也是学习提高的过程. 1.我们可能需要一个什么样的MVC框架 (1)用户一:我讨厌配置文件,最好能用注解的全用注解注解,能扫描直接扫描 (2)用户二:最好我导入一个j

ASP.NET MVC(二) 理解MVC

MVC模型同时提供对HTML.CSS以及JavaScript的完整控制. MVC模型通过三个逻辑层来定义WEB应用程序: (一)Business layer(业务层.模型逻辑) 模型(Model) 模型是应用程序中用于处理应用程序数据逻辑的部分 通常模型对象在数据库中存取数据. (二)Display layer(显示层.视图逻辑) View(视图) 是应用程序中处理数据显示的部分. 通常从模型数据中创建视图 (三)Input control (输入控件.控制器逻辑) 控制器(Controler)