您好、欢迎来到极速赛车手机计划-极速赛车软件计划-极速赛车人工计划软件!
当前位置:极速赛车手机计划.极速赛车软件计划.极速赛车人工计划软件 > 白衣村 >

MVC 5 一 入门

发布时间:2019-05-31 14:20 来源:未知 编辑:admin

  本系类教程将要建立ASP.NET MVC 5 Web 使用法式,利用的东西是VS2013 。此刻有预览版能够下载了,点击下载VS2013 FOR WEB ISO文件。VS2012 还没用几天呢,2013就要出来,听说数据库有SQL2014的版本了。不带这么玩的!!!

  能够发觉和VS2012最大的分歧,WEB里面只要一个选择,确定后接下来才起头选择其他的:

  VS2012 还有MVC3 MVC4选择,在VS2013没得选。好了,建立项目后,我们间接按下F5运转。

  好了,一个网站OK了。具有 首页、关于、联系体例等页面。更NB的是注册登录也有了。

  查看了下网页源代码,前端用的是赫赫有名的 bootstrap。有时间会特地写这个系类的文章。

  什么是MVC?MVC就是 Models 模子,Views 视图,Controllers 节制器。MVC虽然分为3个部门,可是和三层没相关系,是一种用来开辟使用法式的模式具有优良的架构,易于维护和测试。

  下面让我们添加一个节制器类,在资本办理器 项目里面的Controllers 右击。

  接下往来来往个名字吧,第一个实例一般都喜好用 helloworld 。

  我们把代码改成如下,间接前往string字符串在浏览器窗口。

  按下F5,在默认的网页地址后面加上Helloworld,如下图:

  一回车,就会看到我们适才写的字符串显示在页面上。

  ASP.NET MVC 会按照传入的URL挪用分歧的节制器类(上面例子的HelloWorld)以及里面分歧的方式(上面例子的Index、Welcome)。具体根据什么来判断挪用的是哪个节制器,哪个方式在App_Start/RouteConfig.cs 文件里面设定。

  若是间接拜候域名,会默认挪用 defaults里面的 Home节制器下面的Index方式,后面的ID是传入的参数等数据后面会引见。

  所以适才我们浏览的地址:MVC默认的映照来解析的话节制器是 HelloWorld ,挪用的方式是:Welcome 没有ID这个参数。接下来我们点窜为以下代码:

  给Welcome 方式传入2个参数,春秋默认是18 。接下来我们看看运转成果。

  以前要获得GET方式传入的参数,需要写一句代码(request),此刻MVC主动的帮我们绑定了,多便利!接下来我们把上面的阿谁代码中的age改成ID,浏览器地址后面添加 /3?name=yan

  此次的Welcome后面加上了/3 刚好婚配到了ID,剩下的就婚配到了name这个参数。按照这个思绪,是不是有法子让地址栏间接婚配到name,如许url里面就没有 ? 这个符号。

  当然,默认的路由法则大大都环境下是很合适的,不需要去点窜。接下来会引见模子绑定,如许就不需要点窜路由法则了。

  下一步进修:添加视图(View)

  在上一篇《ASP.NET MVC5 添加节制器》里面我们都是间接前往string 字符串或者html 。如许的话节制器不只仅做了节制器的工作还做了VIEW(视图)的工作。凡是我们不单愿节制器间接前往HTML,由于那样子复杂的页面就会很是繁琐,所以我们凡是会用一个零丁的视图模板文件来辅助出产对应的html响应报文前往客户端。

  接下来我们就来看看若何添加视图,先点窜上篇博客的阿谁例子,我们来点窜HelloWorldController类,如许才能让view的模板文件来封装要前往的html响应报文。

  留意名字必然如果 HelloWorld 由于节制器名字是 HelloWorldController 节制器必需是Controller结尾,视图文件夹的名字必需和节制器除告终尾的部门一样。也就是“商定优于设置装备摆设”的理念。

  接下来添加一个支架,选择 MVC5 视图空 不带模子

  点击添加,弹出的对话框把视图名字(View name)改为 Index 。其他连结默认然后确定。

  然后在index.cshtml文件上面右键,选择在页面查抄器中查看。当然也能够按下F5进交运转,在浏览器地址栏输入地址进行查看。

  但浏览器的地址发到办事器的时候,办事器解析给节制器,然后节制器里面只要一句 return View()语句,指定前往一个视图模板文件给浏览器,我们没有写指定什么名字的视图,默认就是Index。

  起首,上一个页面我们需要点窜题目,显示我们本人的消息。页面顶部在一个网站之中的每一页一般都是一样的所以我们来点窜结构的页面也叫母版页。在处理方案资本办理器里面,打开/views/shared 里面的_Layout.cshtml文件。

  能够看到,有良多@开首的内容,好比你能在body里面找到 @RenderBody() 这一行。这个什么意义呢?其实说白了就是一个占位符,到时候能够器具体的视图来填补这个消息。比如适才阿谁Index.cshtml就是用来填补这里的。下面我们来点窜题目,通过这个领会占位符,以及母版页(结构页)的感化。

  我们去About页面也能看到题目都变化了。这就是母版页的感化,我们可以或许在结构页面中点窜一次,网站上的所有页面都显示新的题目。若是看不到结果的线强制刷新看看。

  上一篇的博文间接从M(模子)传HTML归去,此次貌似间接用V(视图),模子却是没怎样用。接下来我们就建立一个数据库,通过M 模子 传送给 V 视图 来显示响应消息。

  在我们成立数据库和模子之前,简单说下数据从节制器传送到视图。当办事器领受到浏览器一个url的请求,某个节制器的某个方式会来响应此次请求。节制器类就是阿谁我们写代码来解析浏览器传入的请求、阐发营业、从数据检索出数据颠末处置后最终决定前往什么样的数据给浏览器。然后视图VIEW就能够获得节制器传入的数据,进行拾掇封装成HTML前往给浏览器。节制器供给视图前往给浏览器需要的数据或者对象。所以,最好让视图不施行营业逻辑不与数据打交道,需要的数据就从节制器拿。如许才能包管“关心点分手”(SOC)。

  回到我们今天写的别的一个方式 Welcome 它需要2个参数,一个是name一个是ID。代码如下:

  ViewBage 是个动态的对象,意味着我们能够随时添加需要的属性。再添加之前ViewBag 并没有阿谁属性。借助于上个博客说的ASP.NET MVC的主动绑定模子,能够间接赋值给适才动态建立的属性 Message 和 tiems。接下来我们按照之前的步调在添加一个视图:Welcome 。

  很是的简单,轮回输出动静。F5运转在地址栏输入

  当我们输入上面地址栏的阿谁地址时候,办事器传送给响应的节制器处置,节制器获得参数,把数据打包成一个ViewBag对象,并将该对象传送给视图,视图获得对象后取到需要的数据,组织好HTML语句然后前往给客户的浏览器。

  接下来的教程,将会引见利用视图模子来将数据从节制器传送到视图。操纵视图模子的方式会比一般的方式好(强类型)。

  下一步:添加模子 额,M(model)的一种模子,不是数据库的那种。

  在本节中,我们将要添加一些类来办理数据库中的消息。MVC入门系类的文章筹算成立一个片子网站的示例。在前几篇的博客《Entity Framework进修领会》,我引见了新的编程体例 Code First 。所以我们该当添加一些类来作为MVC中的“模子”部门。

  在处理方案资本办理器中,右键单击 Models 文件夹,选择添加,然后选择类:

  输入类名“Movie”。

  向类“Movie”添加以下5个属性:

  从上面的代码能够看出,这个就是用类(class)来暗示数据库中的片子(片子数据消息)。类的每个实例对应着数据库中的每行,类的属性对应着数据库中的每列。

  能够看出,MovieDBContext 承继至 DbContext 。我们需要使用Entity,能够手动插手以下的using System.Data.Entity;语句或者像上图那样,在红色错误处右键选择解析,然后主动添加援用。我们也会发觉,有些使用我们不需要,按照下图体例断根未利用的using语句:

  上面就是最终的代码,清新很多。这也是我喜好.NET 胜过JAVA的缘由,有个强大的IDE。很是便利,利用起来容易上手。对于中小企业,快速的开辟出及格产物才是王道!

  下一节:添加数据库毗连字符串和LocalDB。

  在上一篇博文《ASP.NET MVC5 入门四添加模子》中,我们建立了M模子对应的模子类。最终我们仍是要在数据库中建立实在的数据库和表,字段等。对于开辟人员,数据库在开辟过程中只是需要一些简单的功能,为了开辟而安装一个企业版的SQL SERVER太华侈了。还好微软在SQL2012中供给了LocalDB这个新特征,LocalDB也是VS2013默认就安装的。

  简单说就是 SQL免费版的SQL Server Express 的轻量级版本。特地为开辟人员创立的,易于安装,无需办理,编程言语和T-SQL言语都和一般的数据库一样。同时不花费系统援助,没有办事,需要时主动启动遏制。其他更高级的功能就不说了,够用,免费,好用才是王道。同时LocalDB数据库也能便利的移植到SQL Server。

  默认环境下,实体框架会查找和对象同名的上下文里面的毗连字符串。在项目标根目次下面打开Web.config文件:

  默认的毗连字符串:

  能够看出2个毗连字符串都很类似。第一个名字是 DefaultConnection 用来节制能够拜候该使用法式的成员资历数据库。我们添加本人的Movie.mdf数据库,晦气用成员资历数据库。毗连字符串的名字必需和DbContext类的名称相婚配。

  添加好了之后,就是下一步:从节制器拜候模子中的数据。

  起首,我们要添加一个新的节制器,在处理方案资本办理器的Controllers文件夹右键单击,添加,支架。

  在对话框中,我们选择下图这个: MVC5 节制器带有 读/写 和 视图。

  然后ASP.NET MVC5将会主动建立增删查改(CRUD)的方式(action)和视图(views)。是的,一个完整功能的网站就OK了。我们F5运转看看。

  当然,没无数据,由于我们没有添加任何数据。接下来我们点击 Create New 添加新的片子条目。

  我们适才添加一个新的controller的阿谁操作,系统主动添加了哪些文件?

  明显,视图(movies)里面的那些个 cshtml 文件对应着增删改查和首页等的页面。我们先来看看 MoviesController.cs里面有什么?

  上面的14行,定义了一个私有的片子数据上下文,能够用它来进行查询,编纂,删除等。

  第18行的Index()方式前往的是 数据上下文中 所有的片子列表。

  前几篇的博文,我们要前往一些到前台是用 ViewBag 来封装一些数据。其时说了 ViewBag 是动态对象,你能够随便添加。我们此次演示的是强类型,除了机能上的长处还有如下长处:在编写代码时候有智能提醒;编译时候也能查抄代码能否有问题。

  在上面代码25行的 Details 方式,它有个ID的参数。ID在我们前面也说过:雷同于这里面的阿谁1就是ID。用来暗示片子的序号。当然也能够用 ?id=1 如许来暗示。若是找到了对应id的“片子”(27行的代码)就前往 视图(view)同时把movie传进去也就是前往一个强类型的实例。我们看看对应的view(Details.cshtml)里面的代码:

  第一行就是一句 @model 指令。这个指令的感化是告诉视图模板,此次传过来的对象是什么类型的,上图例子就是传过来一个 models 里面的movie 对象。如许在details.cshtml里面我们就能通过model.titile拿到movie的题目。

  我们再来看看index视图的代码:

  这又是强类型的一个益处,能够用轮回遍历!

  我们在web.config里面添加了一串毗连字符串,指定Movies的数据库是LocalDB数据库里面的Movies.mdf。我们能够在资本办理器里面查看如下图:若是看不见请单击 显示所有文件 按钮:

  双击 Movies.mdf 文件,会打开 办事器资本办理器,然后我们展开 表 看看:

  能看到就像以前安装 SQL SERVER一样操作数据库。

  简单的引见就到这里,较着能够看出,开辟东西的前进是越来越振奋人心了!

  下一步:优化系统生成的代码。

  本节中,我们来点窜上一篇博文里面系统主动生成的一些代码,下图是运转后的截图:

  能够看到有良多不足好比:英文太多,日期格局太长等。

  红色框起来的就是添加的部门,using 语句里面的阿谁 DataAnnotations 我们下载在说。Display 属性指定要显示的字段的名称。本来没有写的话,就是数据库字段的名称,此刻我们写上中文了。DataType 指定字段显示的格局,改为日期如许的话时间就不会显示出来,更美妙了。

  Html是个Help 类,挪用 ActionLink方式来动态生成HTML超链接。ActionLink方式第一个参数指定显示的字符串,第二个参数是 要挪用的Action的名称,第三个参数是一个匿名对象。

  第一个方式是接管GET请求,第二个是接管HttpPost 。能够看到第二个有个属性【HttpPost】而第一个没有,由于默认就是GET请求。我们留意到第二个Edit方式前面还有一个【ValidateAntiForgeryToken】这个次要是用来防止跨站请求伪造(CSRF)。这个需要和视图里面@Html.AntiForgerToken() 共同利用,会生成一个躲藏的防伪标识表记标帜。下次写个文章引见一下。

  在上面的GET的Edit 方式,挪用实体框架的FIND方式查找时候具有对应id的片子,若是具有就前往给视图,不具有就前往404。下面是视图里面的代码:

  生成这么漂亮的控件,竟然一句代码都不消写,真好!

  回过甚来看POST请求的EDIT方式:

  第一步,判断表单中的模子所有属性时候都能够点窜或者更新。若是是无效的,就把实体框架形态改为点窜,然后更新到数据库。保留之后,重定向到Index 这个方式,我们就会看到点窜后的结果。

  接下来我们添加搜刮功能,能够按照片子的题目搜刮。

  在最起头MVC入门说过,MVC一个益处就是关心点分手。当我们需要点窜和数据相关的工具,只需去点窜Controller 就能够。此刻我们去点窜MoviesController的Index方式:

  第一行的LINQ查询用来选择Movies。仅仅是定义了movies代表数据库中的哪些,还没有起头查询。接下来判断查询的字符串能否为空,若是不为空就起头查询题目一样的片子。

  我们此刻F5运转一下看看,在地址栏后面加上?searchString=中国

  当然,我们不克不及让用户不断在地址栏加上那么一串来搜刮,遍及做法是,在页面顶部加一个搜刮框。看到这个就晓得需要改动View部门。我们打开Views\Movies\Index.cshtml 文件,在Create New后面加上如下代码:

  能够发觉,我们并没有添加节制器中Index的POST请求,也能一般查询。我们此刻添加HttpPost方式

  我们会发觉,GET和POST请求的url都是一样的,都是 localhost:xxx/Movies/Index 。假如我们想要把链接发给伴侣,让他晓得我想看哪些片子,可是这些查询消息却没有在url里面表现,如许不愿能发送给伴侣。

  处理方式是操纵 BeginForm 的重载,有个指定POST请求添加搜刮消息到url中。

  改成如上的代码,就能够指定用GET方式提交,哪怕你曾经有了HttpPost 的方式。

  把适才测试的Index HttpPost 方式删除,我们接下来添加一个功能,让用户能够按照类型来搜刮片子。同样是点窜Index的方式。代码如下:

  第三行的代码,我们添加了一个List对象来保留从数据库取出的片子类型数据。第四行代码是一个LINQ查询。第五行代码我们把获得查询成果存到LIST里面,用了 Distinct 方式,过滤反复对象。

  节制器的代码搞定后,就是点窜View,在添加一个搜刮框。

  我们运转看看:

  能够看出,操纵MVC开辟网站长短常的便利,快速。

  下一节,添加新的属性(字段)到Model(数据库模子)中。

  在Code First开辟中,不成能一起头建立的数据库类就不断不变可能跟着需求或者其他缘由要做调整。假设我们在原有的Movies里面添加一个评级属性。

  然后我们运转下看看。

  非常了!正文掉适才添加的代码,在运转看看:

  发觉能够拜候,这是由于当EF CodeFirst的数据模子发生异动时,默认会激发一个 InvalidOperationException非常。有个处理方式是,在Global.asax 里面的Application_Start方式加上 一个 SetInitializer方式,这个方式会让数据库删除在从头建立。就是由于如斯,有了大量的测试数据明显不克不及用这个方式!

  起首,我们删除系统主动建立的Movies.mdf文件。如下图,若是在App_Data 里面没有看见,请单击显示所有文件图标。

  然后我们按照正文的提醒,点窜下Seed方式的内容为如下:

  然后我们建立一个数据库迁徙的版本,就是初始版本。在办理节制台输入 add-migration Initial 此中Initial能够随便取名。

  文件夹下面多了一个日期+Initial.cs 的文件。

  接着我们在PM(法式包揽理节制台)输入 Update-Database 指令。

  这个指令会检测适才阿谁cs文件,里面包含数据库的布局的申明,然后运转 Seed里面的方式填凑数据。然后我们F5运转看看。

  接下来我们给片子模子添加一个分级功能,雷同《小时代》!把我们刚坚毅刚烈文掉的再归正文,然后从头生成下。生成完后还需要点窜几个处所,若是你有本人设定Bind属性,还要把新的字段添加进去,同时要去视图点窜下。我们去Index.cshtml点窜下:

  红色框框就是新添加的2处。同样的,Create.cshtml也需要添加。

  好了之后我们运转看看。

  呈现错误了!那是由于此刻的模子曾经多了一个字段,而数据库还没有变化。能够用上文提到的让系统主动把数据库砍掉在从头生成,或者本人手动点窜数据库。不外这些都不是最优的,最好的是利用Code First 的数据库迁徙。第一步,更改Seed文件,在默认的那些测试数据中添加分级消息。

  会发觉多了一个up和down方式,记实着数据库的变更。接着我们出产处理方案,然后再PM输入:Update-database 号令。然后运转看看:

  评级呈现了,我们点击 Create New 看看:

  一切一般,都能添加。可是如许还不敷智能,接下来我们设置主动数据库迁徙。

  如许当前一旦数据库模子变化,就能主动进行升级。

  下一步:添加验证。

  在本教程:将要在Movie 模子添加验证逻辑确保用户添加或者编纂时数据无误。

  ASP.NET MVC 的焦点设想准绳之一就是DRY(Dont Repeat Yourself)。ASP.NET MVC 激励你为一个功能或者行为编码一次,在当前需要用到的处所不断复用就能够。如许能够削减编写代码的数量,同时易于维护。

  在ASP.NET MVC 和 EF code first 中供给的验证支撑就是DRY的好例子。能够只声明一次,然后在任何需要的处所中施行法则。

  弄完后,我们看看数据库的设想:

  明显和规格不符,我们来点窜它。先生成处理方案,接下来就是操纵数据库迁徙功能主动生成。号令如下:在软件包揽理器节制台输入

  号令完成时,VS会主动打开一个类文件,我们能够看到此中的Up方式。

  Genre 字段不再是可空的,题目和分级都添加了验证前提。我们从头看看数据库的设想:

  曾经悔改来了。相关限制前提在源码里面很清晰了,不在细说。

  很较着了,若是没有通过当地客户端的验证,点击Create是不会向办事器提交表单的。

  接来下我们看看实现的过程看看在建立视图和建立Action方式时发生了什么

  会发觉和以前完全一样,没有任何代码上的变化。第一个Create (GET方式)是用来显示初始建立的窗体。第二个(POST版本的)方式先验证能否有错误(ModelStateIsValid)若是具有错误,则从头显示窗体,不然就在数据库中保留新的片子消息。客户端实现校验是通过 javascript 假如我们禁用它看看会发生什么。禁用方式分歧浏览器有分歧的选项,搜刮一下就能够。

  禁用 chrome 后,刷新从头输入:

  没错误提醒,我们点击Create

  很较着,仍是有验证,接下来我们输入准确的看看。

  成功添加进去了,感乐趣的话,在movie.cs 的 POST Create请求添加断点,会发觉输入错误的消息,IsValid 是false ,输入准确是True。

  若是你添加了断点测试 启用/禁用 JavaScript 2种环境下Create方式的挪用会发觉,在启用JS的环境下,若是客户端检测到错误是不会挪用Action里面POST的Create方式。若是禁用了JS功能,到表单提交到办事器,会通过 ModelState.IsValid 来验证能否数据具有错误。

  下一部门:此次改良了 Create 方式的数据验证,下一次就是 Details 和 Delete 方式了。

  感激作者,祝作者早日创业成功!

锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 极速赛车手机计划-极速赛车软件计划-极速赛车人工计划软件 版权所有