ASP.NET MVC 5 学习教程:添加控制器

原文 ASP.NET MVC 5 学习教程:添加控制器

起飞网 ASP.NET MVC 5 学习教程目录:

  • 添加控制器
  • 添加视图
  • 修改视图和布局页
  • 控制器传递数据给视图
  • 添加模型
  • 创建连接字符串
  • 通过控制器访问模型的数据
  • 生成的代码详解
  • 使用 SQL Server LocalDB
  • Edit方法和Edit视图详解
  • 添加查询
  • Entity Framework 数据迁移之添加字段
  • 添加验证
  • Details 和 Delete 方法详解

MVC代表了模型-视图-控制器。MVC是一个架构良好,可测试性和易于维护的应用程序开发模式。基于MVC模式的应用程序包含:

  • 模型:模型类代表了应用程序中的数据,为强制执行业务规则使用了数据逻辑验证。
  • 视图:应用程序中的视图模板文件用来动态生成HTML响应。
  • 控制器:控制器类处理传入的浏览器请求,获取模型数据,然后指定视图模板,将响应返回给浏览器。

我们将在本教程系列涵盖了所有这些概念,并告诉你如何使用它们来构建应用程序。

首先,让我们创建一个控制器类。在“解决方案资源管理器”中,右键“Controllers”文件夹,然后选择“添加”>“支架”:

图1:添加控制器的菜单

在添加支架对话框中,选择“MVC 5 Controller - Empty”,然后单击“添加”按钮:

图2:添加支架对话框

在Controller Name中输入“HelloWorldController”,单击“Add”按钮:

图3:添加控制器对话框

此时在“解决方法资源管理器”中已经新建了文件 HelloWorldController.cs。该文件在IDE中是打开的。

图4:HelloWorldController.cs

使用以下代码替换文件内容:

代码清单1:HelloWorldController.cs

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”(例如,在下面的图5中,地址栏内容为 localhost:2264/HelloWorld)。浏览器中的页面效果如图5:

图5:浏览器中查看 HelloWorld

ASP.NET MVC 根据传入的URL调用不同的控制器(还有不同的操作方法),ASP.NET MVC 默认的路由规则决定了调用那些代码:

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

你可以在 App_Start/RouteConfig.cs 文件中设置路由格式。

代码清单2:默认路由代码

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 });
}

在代码清单2中,当你运行程序,且不提供任何URL片段的时候,默认调用 Home 控制器的 Index 方法。

URL第一部分决定了要调用的控制器,/HelloWorld 对应的是 HelloWorldController 类。第二部分决定了被调用的Action方法,因此 /HelloWorld/Index 引发调用了HelloWorldController 类的Index 方法。虽然我们浏览的地址是/HelloWorld,但是Index方法是默认的Action,所以Index方法会被调用。URL的第三部分是数据部分,我们将在后面的章节中介绍路由数据。

浏览地址: http://localhost:xxxx/HelloWorld/Welcome,Welcome方法被执行,返回字符串“This is the Welcome action method...”。MVC的默认映射是 /[Controller]/[ActionName]/[Parameters]。对于这个URL,控制器是HelloWorld,Welcome 是执行的方法。我们还没有在地址中使用[Parameters]部分。

图6:浏览器中查看Welcome

让我们稍微修改一下例子,使你能够从URL中传递参数给控制器(例如,/HelloWorld/Welcome?name=Scott&numtimes=4)。修改Welcome方法,让它包含两个参数。请注意,该代码使用C#的可选参数功能,表明的numTimes参数如果参数传递,那么默认为1。修改后的代码如下:

代码清单3:修改后的Welcome方法

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 模型绑定系统自动将地址中命名的查询参数映射为方法中的参数。

图7:浏览器中查看带参数的Welcome

在上面的例子中,URL的参数部分没有用到,参数 namenumTimes 是作为查询字符串传递的。

使用下面的代码替换Welcome方法:

代码清单4:Welcome方法代码

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

运行程序,并浏览下面的地址: http://localhost:xxx/HelloWorld/Welcome/3?name=Rick

图8:使用了参数部分的Welcome

这次的URL第三部分匹配了参数 ID,因为Welcome 方法中有一个参数ID,这个URL正好与RegisterRoutes中的规范匹配。此处可以参见代码清单2中的默认路由规则。

在ASP.NET MVC 应用程序中,像我们使用路由数据传递参数,比用查询字符串传递参数更为典型。你还可以定一个路由,通过路由数据使用URL同时传递name和numTimes两个参数。在App_Start\RouteConfig.cs  文件中,添加一个名为“Hello”的路由:

代码清单5:添加Hello路由

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:

图9:同时传递两个参数

在大多数MVC应用程序中,默认的路由都可以很好的工作。你会在本教程的后续章节中学习通过模型绑定传递参数,并且你不用修改默认的路由。

在这些例子中,控制器做了MVC中“VC”部分的工作,这说明视图和控制器工作了。控制器直接返回了HTML。通常我们不想控制器直接返回 HTML,因为代码变得非常麻烦。相反,我们通常会使用一个单独的视图模板​​文件来帮助生成HTML响应。我们会在后面的章节中介绍这些内容。

本文转自起飞网,原文地址:http://www.qeefee.com/mvc/mvc-5-adding-a-controller

如果认为此文对您有帮助,别忘了支持一下哦!

作者:齐飞
来源:http://youring2.cnblogs.com/
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

posted on 2013-12-10 20:54 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3468150.html

ASP.NET MVC 5 学习教程:添加控制器相关推荐

  1. ASP.NET MVC 5 学习教程:控制器传递数据给视图

    起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...

  2. ASP.NET MVC 5 学习教程:添加查询

    起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...

  3. ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

    ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一 ...

  4. ASP.NET MVC 5 学习教程:修改视图和布局页

    ASP.NET MVC 5 学习教程:修改视图和布局页 原文 ASP.NET MVC 5 学习教程:修改视图和布局页 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图 ...

  5. ASP.NET MVC 5 入门教程 (2) 控制器Controller

    原文:ASP.NET MVC 5 入门教程 (2) 控制器Controller 文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get ...

  6. ASP.NET MVC 5 入门教程 (3) 路由route

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门 ...

  7. ASP.NET MVC Music Store教程(2):控制器

    ASP.NET MVC Music Store教程(2):控制器 转自http://firechun.blog.163.com/blog/static/3180452220110272197830/ ...

  8. ASP.NET MVC 右键点击添加没有区域(Area)、控制器、试图等选项

    在MVC项目中准备添加控制器.区域时发现没有控制器这个选项,当时没有在意以为VS出问题了,网上所搜了一下,有人说没有安装:Microsoft.AspNet.Mvc或者需要升级. 本次的解决如下: 1) ...

  9. ASP.NET MVC Music Store教程(1):概述和新项目

    ASP.NET MVC Music Store教程(1):概述和新项目 转自 http://firechun.blog.163.com/blog/static/31804522201102709374 ...

最新文章

  1. 刷了几千道算法题,我私藏的刷题网站都在这里了
  2. 力拎30磅!波士顿动力物流机器人Handle亮相,还会摆货架
  3. MySQL中查询时对字母大小写的区分
  4. mysql5.6最好的备份方案_Mysql 5.6迁移至PostgreSQL 9.6的实践小结
  5. MySQL复习资料——用于突击考试总结
  6. js中 var a= b || c;
  7. javasrcipt的作用域和闭包(二)续篇之:函数内部提升机制与Variable Object
  8. 前端测试框架Jest系列教程 -- 简介
  9. 43. Know how to access names in templatized base classes.
  10. 【58沈剑架构系列】微服务架构多“微”才合适?
  11. U盘镜像刻录(制作U盘启动盘)
  12. stm32 W25QXX系列驱动 W25Q80 W25Q16 W25Q32 W25Q64 W25Q128 W25Q256
  13. 网吧十大漏洞曝光(转)
  14. 数据库SQL 某字段按首字母排序
  15. 软件项目工作量评估法——功能点估算(FPA)(一)初识
  16. 思维导图、流程图制作工具ProcessOn的使用
  17. .net输入汉字转拼音
  18. keil工程 freertos+emwin AC5编译器移植到AC6编译器
  19. 头条等互联网公司面试准备、HR、Android技术等面试问题汇总
  20. 双十一有哪些电容笔值得入手?十大电容笔知名品牌

热门文章

  1. 积极开展网络营销的AI换脸软件短短几日经历了从爆红到下架
  2. 企业网站优化如何提升网站收录?
  3. 企业网站推广如何利用SEO获取精准流量?
  4. 服务器文件后缀都加了re,已解决: Re: 修改了备份服务器客户端的别名之后所有的备份都出错了 - Dell Community...
  5. Android Studio自定义视图无法预览
  6. android VectorDrawable使用笔记(三)
  7. 16年寒假随笔(1)
  8. Trustzone——利用硬件对数据加密,秘钥存在芯片里
  9. 机器学习 LR中的参数迭代公式推导——极大似然和梯度下降
  10. 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊