Asp.Net MVC5入门学习系列②

原文:Asp.Net MVC5入门学习系列②

添加一个Controller(控制器)

   因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用来便于我们的开发,要是对MVC概念还有点模糊的,可以去我以前写的第一话 Asp.Net MVC 3.0【Hello World!】里开始部分就对此做了阐述。假定所有跟我一起学的都了解MVC的这么一个概念,我们就开始下面的步骤了:

现在我们开始添加一个Controller,具体如下:

我们选择创建一个空的Controller,然后点击确定:

这里需要给Controller取一个名字,我这里就老一套了叫HelloWorld,然后点击确定如下图:

这里自带了一个返回View()的动作(action),说的绕口就是说这里VS在给我们创建Controller的时候会生产一个返回试图的方法,该方法没有任何操作动作就是接受HTTP GET请求HelloWorld过来执行该方法。要是你细心的话你会发现在VS我们创建HelloWorldController同时,它默默的在Views文件下为我们默默的创建了一个HelloWorld的文件夹,这样V  C在某种机制上是不是对应起来了,这也是一种框架约定。

OK,我们简单的玩下这个我们创建好的Controller,具体代码如下:

这里随便写了2个方法,当然我返回的是一段字符串,然后我们在浏览器模拟HTTP去请求我们的HelloWorldController里面我们写的放回字符串的方法,看它是否会相应我们的发起的请求,我们运行起来我们的程序如下:

然后我们开始模拟HTTP开始请求我们的写的HelloWorldController,具体操作如下图:

我们请求它看是否能返回我们需要的字符串打印到浏览器上,结果如下:

HelloWroldController响应了我们的请求,并且把字符串返回回来打印到浏览器并且我们来检查下我们发起请求的方式不是不是GET,利用火狐的开发人员工具我们可以清楚的看到请求方式:

其实通过上面这个过程我们就可以在此清楚的看到MVC强大的路由机制,这个我好像也说过好多次了o(^▽^)o,不过MVC就是在这个地方强势耶,所以想学好MVC的话还是要多去了解下它路由机制方面的东西,本菜鸟也是入门就不说的那么高深了,来看看VS在给我们创建应用程序的时候,框架自身配置的路由,大多数情况这个自身配置路由是够我们的应用开发的。来看看项目的RouteConfig.cs配置文件,他位于项目的位置如下:

其实我们刚才模拟HTTP请求HelloWorldController的动作就经典的执行了下上面配置文件的配置。当我们请求HelloWorld时路由机制会将我们的请求映射到HelloWorldController类(控制器),根据上面配置文件配置描述的话,第二个URL片段上应该是action(动作/方法)也就是方法名,当然你会问我刚才就没有访问Index这个方法,为什么结果会是index方法的字符串怎么不是welcome方法的返回的字符串。这里呢我就个人观点说下,不对的话还望各位朋友指教!因为我们没有给它指定Controller里action的名字(方法),所以这里路由机制会字段检索默认方法,这里就检索到index这个方法。同时这也是为什么我们每次创建一个Controller的时候它都会自动给我们创建一个默认的动作方法,这个地方或许就是它的作用之一吧。。。。。。好了就啰嗦这么多,然后我们在继续模拟HTTP请求下我们的第二个方法,看能不能返回我们想要的字符串,请求访问结果如下:

当我们请求Welcome()方法时候,返回了我们想要得到的字符串打印到页面。同时还想说明下,同样的HTTP模拟请求,两个方法都是GET请求,你们认为那个方法的执行速度快呢?

  哈哈当然是第二了,这里有人会问为什么,因为第二指定了Action名称(方法名称)所有路由机制根据你提供的方法名字就直接去找了,而第一个路由机制有一个检索或者说检查的动作在里面可能在细微上就要稍微慢于第二个方法了,我们看看第二的工作人员工具里返回的信息如下:

在粒度细节上是不是说明了上面的问题。这个纯属个人观点。

我们可以把我们的welcome()方法稍稍修改下,修改如下:

然后我们在模拟Http拼链接和参数请求该方法,看是否能达到我们预期的目的,操作如下:

这样的拼链接请求是绝对OK的,但是这样人一眼都可以看出来我这个链接是穿参数过去访问方法,这个时候大多数人会说那你这也太垃圾了吧,太弱了吧!这个不是很容易被各种爆菊么!o(^▽^)o 其实我也绝对这么写垃圾,东西在地址栏是赤裸裸等待爆菊,这时怎么办啊!有朋友会站出来说简单啊我自己写一个加密解密类在传参数的时候加密在取参数的地方解密,可以这个做法是可以得,当然本菜鸟也搞过这种事情。但是我们现在用的是mvc,mvc可以自定义路由,这样的话,对于这种URL,我们可以可它配置一条机制,然后以后类似这种的URL都会按照我们的机制走岂不是更好,当然我以前的文章也有这方面的东西在里面,有兴趣的话可以翻翻。

我们现在开始来配置这么一条路由机制,在RouteConfig.cs里面配置哦,可不要随便拉个类以配置,随便配置的话也可以,那就是你要想办法让路由机制认识你的配置就行,我们就在RouteConfig.cs里面配置我们的路由机制,配置如下:

添加这么一条路由机制的话,我们再次来模拟HTTP请求下我们的Welcome()方法,大致如下:

这样的请求URL是不是就漂亮多了哈!不过我们的这个请求的和我们想要的不是一回事,我们给的24拿出来的是0,这里是因为我们这个welcome这里的参数写的有问题,我们简单的改下,改为如下代码:

然后我们在次模拟HTTP请求,请求结果如下:

OK,今天就暂时先分享到这里吧o(^▽^)o!

时间: 2024-10-27 22:12:23

Asp.Net MVC5入门学习系列②的相关文章

Asp.Net MVC5入门学习系列⑤

原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体      前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了.这篇的话就简单的看下它默认实现的代码,VS终归强大,但是方便的同时也是在弱化我们,当然大牛级别的这样搞是为了效率,我们新手的话还是建议不要去偷那个懒,至于为什么?不解释啦.....    我们打开我们的创建的实体对象Movie类,然后再ReleaseDate属性上添加一些标识特性,具体如下:  

Asp.Net MVC5入门学习系列⑥

原文:Asp.Net MVC5入门学习系列⑥ 接着上次的篇幅,我们这篇手动来写一个查询的流程代码!     搜索/查询 流程功能的实现     那现在要做搜索(查询)功能我们第一步应该做什么呢!第一次是不是我们应该去Controller(控制器)里去搞一个搜索(查询)的方法(action),那么我就说做搜索功能吧!搜索可能是根据名字搜索,如果根据某一个条件搜索的话,那么我们的方法就需要一个参数,如果是多个条件的话就需要多个参数给方法传递多个参数,这么说你的方法的参数多少是不是就取决你我们的搜索条

Asp.Net MVC5入门学习系列⑦

原文:Asp.Net MVC5入门学习系列⑦ 接着上篇结尾所说,如果开发中刚才遇到Model需要添加或者减少字段/属性的话,但是刚好你也利用EF的Code frist通过Model生存的数据库,这时改怎么办?   添加一个字段   我们现在要给Movie实体模型类添加一个评价的字段该怎么搞!我们知道我们默认使用EF code frist生存的数据库是同步性的,这样才能便于我们更好的开发,如果实体模型和数据库不同步的话,实体框架应该会抛出异常.  code frisr设置模型库迁移  在VS里我们

Asp.Net MVC5入门学习系列④

原文:Asp.Net MVC5入门学习系列④ 添加Model且简单的使用EF    对于EF(EntityFramework)不了解的朋友可以去百度文科或者在园子里搜一些简资源看下,假如和我一样知道EF的概念,那么就知道EF有一个code first的特性,什么意思呢!说的通俗简单明了点就是:通过代码映射到数据库!有朋友会说这里不是添加Model说这个EF干啥呢!说这个code first呢就是我们在一会添加Model的同时我打算利用EF的code first特性把我们的Model映射到数据库,

Bootstrap3.0入门学习系列:学习从现在开始

前言 当下最流行的前端开发框架Bootstrap,可大大简化网站开发过程,从而深受广大开发者的喜欢.本文总结了Bootstrap之所以广泛流传的 11大原因.如果你还没有使用Twitter Bootstrap,建议你去了解一下.我也是最近才有所发现的,不过有更好的消息,在前两天微软发布的VS2013正式版中,也已经将 BootStrap3.0的版本加入了额,连微软都看到bootStrap的强大,而且它的确很不错,所以我也不得不学习. Bootstrap深受广大屌丝喜爱的原因到底是什么呢? 1.节

ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一)

UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新.通过本文来学习一下UpdatePanel简单的使用方法(第一篇). 一.UpdatePanel控件概述 UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Ex

ASP.NET AJAX入门系列(1):概述

经常关注我的Blog的朋友可能注意到了,在我Blog的左边系列文章中,已经移除了对Atlas学习手记系列文章的推荐,因为随着ASP.NET AJAX 1.0 Beta版的发布,它们已经不再适用,为了不继续误导广大朋友,所以不再作为推荐系列文章,如果有需要参考的朋友,可以直接到随笔分类中查看. ASP.NET AJAX Beta改动如此之大,鉴于又没有很好的中文参考资料,所以决定最近开始写作ASP.NET AJAX入门系列,这个系列我会把ASP.NET AJAX当作一个全新的东西去对待,不再考虑以

Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]

原文:Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中] 前言 本来一直参见于微软官网进行学习的, 官网网址http://www.asp.net/web-api.出于自己想锻炼一下学习阅读英文文章的目的,又可以学习下微软新发布的技术,其实也很久了,但自己菜鸟一枚,对自己来说都是新技术了.鉴于以上两个原因,本人打算借助google翻译和有道词典,来翻译学习这个系列,并通过博客园来记录自己的翻译学习过程.由于自己阅读水平的确太菜,在借助工具的情况下,有时候搞出来的也是蹩脚的语句,

ASP.NET MVC 5 学习教程:快速入门

原文 ASP.NET MVC 5 学习教程:快速入门 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Server LocalDB Edit方法和Edit视图详解 添加查询 Entity Framework 数据迁移之添加字段 添加验证 Details 和 Delete 方法详解 本教程将介绍如何使用Visual Studio Express 201