MVC 代表 模型-视图-控制器。 MVC 是用于开发应用程序的一种模式,该模式设计良好、可测试且易于维护。 基于 MVC 的应用程序包含:

  • M 模式:类,这些类表示应用程序的数据,并使用验证逻辑来强制执行该数据的业务规则。
  • V 视图:应用程序用于动态生成 HTML 响应的模板文件。
  • C 控制器:用于处理传入浏览器请求、检索模型数据,然后指定将响应返回到浏览器的视图模板的类。

我们将在本系列教程中介绍所有这些概念,并向您演示如何使用它们来生成应用程序。

首先,让我们创建一个控制器类。 在 解决方案资源管理器中,右键单击 " 控制器 " 文件夹,然后依次单击 " 添加"、" 控制器"。

在 " 添加基架 " 对话框中,单击 " MVC 5 控制器-空",然后单击 " 添加"。

将新控制器命名为 "HelloWorldController",并单击 " 添加"。

请注意, 解决方案资源管理器 创建了一个名为 HelloWorldController.cs 的新文件和一个新的文件夹 Views\HelloWorld。 控制器在 IDE 中处于打开状态。

将文件的内容替换为以下代码。

using System.Web;
using System.Web.Mvc; namespace MvcMovie.Controllers
{ public class HelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "This is my <b>default</b> action..."; } // // GET: /HelloWorld/Welcome/ public string Welcome() { return "This is the Welcome action method..."; } }
}

控制器方法将以 HTML 形式返回一个字符串作为示例。 控制器名为 HelloWorldController ,第一种方法名为 Index 。 让我们从浏览器中调用它。 按 F5 或 Ctrl + F5) 运行应用程序 (。 在浏览器中,将 " HelloWorld 追加 " 到地址栏中的路径。 (例如,在下图中, http://localhost:1234/HelloWorld. 浏览器的) 页面将类似于以下屏幕截图所示。 在上面的方法中,代码直接返回了一个字符串。 你已告诉系统只返回了一些 HTML,但确实返回了!

ASP.NET MVC 将调用不同的控制器类 (和它们内的不同操作方法) 具体取决于传入 URL。 ASP.NET MVC 使用的默认 URL 路由逻辑使用如下格式来确定要调用的代码:

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

应用 _ 启动/RouteConfig 文件中设置路由格式。

public static void RegisterRoutes(RouteCollection routes)
{routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}

当你运行应用程序但不提供任何 URL 段时,它将默认为 "Home" 控制器和上述代码的 "默认值" 部分中指定的 "索引" 操作方法。

URL 的第一部分确定要执行的控制器类。 因此, /HelloWorld 映射到 HelloWorldController 类。 URL 的第二部分确定要执行的类的操作方法。 因此, /HelloWorld/Index 将导致 Index HelloWorldController 执行类的方法。 请注意,我们只需要浏览到 /HelloWorld ,并在 Index 默认情况下使用该方法。 这是因为,名为的方法 Index 是将在控制器上调用的默认方法,如果未显式指定一个方法。 URL 段的第三部分 (Parameters) 针对的是路由数据。 稍后,我们将在本教程中看到路由数据。

浏览到 http://localhost:xxxx/HelloWorld/WelcomeWelcome此方法将运行并返回该字符串, " 这是欢迎操作方法 ... " 。 默认 MVC 映射为 /[Controller]/[ActionName]/[Parameters] 。 对于此 URL,采用 HelloWorld 控制器和 Welcome 操作方法。 目前尚未使用 URL 的 [Parameters] 部分。

让我们略微修改示例,以便可以将一些参数信息从 URL 传递到控制器 (例如, /HelloWorld/Welcome? name = Scott & numtimes = 4) 。 将 Welcome 方法更改为包含两个参数,如下所示。 请注意,该代码使用 c # 可选的参数功能,指示 numTimes 如果没有为该参数传递值,则该参数应默认为1。

public string Welcome(string name, int numTimes = 1) {return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

运行应用程序,并浏览到 () 的示例 URL http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4 。 可在 URL 中对 namenumtimes 使用其他值。 ASP.NET MVC 模型绑定系统自动将命名参数从地址栏中的查询字符串映射到方法中的参数。

在上面的示例中,未使用 URL 段 ( Parameters) , name 且和 numTimes 参数作为 查询字符串进行传递。 ? 上述 URL 中的 (问号) 为分隔符,查询字符串如下所示。 & 字符用于分隔查询字符串。

将欢迎方法替换为以下代码:

public string Welcome(string name, int ID = 1)
{return HttpUtility.HtmlEncode("Hello " + name + ", ID: " + ID);
}

运行应用程序并输入以下 URL: http://localhost:xxx/HelloWorld/Welcome/1?name=Scott

这次,第三个 URL 段与路由参数匹配 ID.Welcome 操作方法包含参数 (ID 与方法中的 URL 规范匹配的参数) RegisterRoutes

public static void RegisterRoutes(RouteCollection routes)
{routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}

在 ASP.NET MVC 应用程序中,以路由数据的形式传递参数更为典型, (如我们在) 之前的 ID 不是将它们作为查询字符串传递。 你还可以添加路由,以将和传入 name numtimes 参数作为 URL 中的路由数据。 在 App _ Start\RouteConfig.cs 文件中,添加 "Hello" 路由:

public class RouteConfig
{public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });routes.MapRoute(name: "Hello",url: "{controller}/{action}/{name}/{id}");}
}

运行应用程序并浏览到 /localhost:XXX/HelloWorld/Welcome/Scott/3

对于许多 MVC 应用程序而言,默认路由是正常的。 你将在本教程的后面部分了解如何使用模型绑定器传递数据,并且你无需修改该的默认路由。

在这些示例中,控制器已执行 " MVC 的 VC " 部分,即视图和控制器工作。 控制器将直接返回 HTML。 通常情况下,你不希望控制器直接返回 HTML,因为这会对代码非常麻烦。 我们通常会使用单独的视图模板文件来帮助生成 HTML 响应。 接下来,我们来看看如何实现此目的。

ASP.NET MVC入门——添加控制器相关推荐

  1. ASP.NET MVC系列:添加控制器

    基于MVC的应用程序包含三个部分 Models(模型):对应用程序的数据进行处理 Views(视图):动态生成HTML,显示数据 Controllers(控制器):应用程序中处理用户交互的部分,处理浏 ...

  2. ASP.NET MVC入门到精通——Spring.net-业务层仓储

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一节,我们已经把项目框架的雏形搭建好了,那么现在我来开始业务实现,在业务实现的过程当中,不断的来完善我们现有的框架. 1.假设我们来做一个 ...

  3. ASP.NET MVC 入门3、Routing

    本系列文章基于Microsoft ASP.NET MVC Beta. 在一个route中,通过在大括号中放一个占位符来定义( { and } ).当解析URL的时候,符号"/"和& ...

  4. ASP.NET MVC 入门8、ModelState与数据验证

    ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的ModelState类型的字典集合.在进行数据验证的时候这个属性是比较有用的.在使用Html. ...

  5. [转]ASP.NET MVC 入门3、Routing

    在一个route中,通过在大括号中放一个占位符来定义( { and } ).当解析URL的时候,符号"/"和"."被作为一个定义符来解析,而定义符之间的值则匹配 ...

  6. ASP.NET MVC 入门

    入门基础 ASP.NET MVC 是微软系列基于 C# 语言的 Web 开发框架,并不适合 0 基础入门,在学习之前你必须要了解 4 个知识点: 1.HTML 基础.网页的基本标签,结合 ASP.NE ...

  7. ASP.NET MVC 入门系列教程

    一个居于ASP.NET MVC Beta的系列入门文章,有朋友提议说写一个示例程序来同步讲解,那样更加容易学习.所以就写选择了写一个Blog程序来作为示例程序.(原来是居于ASP.NET MVC Pr ...

  8. 16、ASP.NET MVC入门到精通——MVC过滤器

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在ASP.NET MVC中有四种过滤器类型 Action 1.在ASP.NET MVC项目中,新建文件夹Filter,然后新建类MyCust ...

  9. 14、ASP.NET MVC入门到精通——Ajax

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 Unobtrusive Ajax使用方式(非入侵式) 非入侵式,通俗来讲:就是将嵌入在Html中的JavaScript全部取出来,放在单独的 ...

最新文章

  1. 计算机上机报告-origin,Origin 8上机练习1
  2. Programe_Of_Beauty :3.9 重建二叉树
  3. 汇编语言MOVZX和MOVSX指令
  4. Spring Cloud——基于Dubbo的分布式Session解决方案
  5. Django(part30)--原生的数据库操作方法
  6. PyTorch 分布式训练DDP 单机多卡快速上手
  7. nccloud开发环境搭建_VS Code 搭建开发环境
  8. python下载文件并改名_Python遍历文件夹并批量改名
  9. c++ 查看opencv版本 linux
  10. 常用Windows 运行命令
  11. sfp寄存器_SFP+-光模块测试指导
  12. Fedora分区扩容以及如何修复引导
  13. 网易有道,能否看透“K12双减”风浪?
  14. Teams App 资源中心种草指南
  15. 关于NBMA网络基于RIP、HDLC、PPP,MGRE环境下实现所有PC互通
  16. Jmeter压力测试结果报告参数详解
  17. 解题:POI 2011 Strongbox
  18. 7、PN结的电容效应
  19. c# ef报错_关于c#:在EF 6中更新现有数据会引发异常-“…同一类型的实体已经具有相同的主键值。”...
  20. Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。

热门文章

  1. 二级计算机为让利消费者,计算机二级Excel表格题库答案(解题步骤)
  2. (三)《跟我一起写Makefile》之Makefile总述
  3. Mean Teacher学习笔记(一)
  4. 三个数比大小——问号表达式
  5. 【杂文随笔】2019年总结 送自己一个字
  6. 时间复杂度,空间复杂度(超详细)真香
  7. 设计模式 - 外观模式
  8. 去掉新浪sae认证烦人小尾巴
  9. 30分钟让你学会借贷记账法
  10. #47-D: incompatible redefinition of macro STM32F40_41xxx