博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC学习笔记一
阅读量:5314 次
发布时间:2019-06-14

本文共 2620 字,大约阅读时间需要 8 分钟。

主要是为了复习昨天所学习到的MVC的基础内容,因为昨天还在申请博客,所以今天补上。

目前主要学习资料是《ASP.NET MVC4 Web 编程》 

 

首先先来一个MVC请求的路径的流程说明。

上图说明:

  

  Routing路由 

  MVC里的URL重写是让很多新手摸不着头脑的地方。下边的图清楚的解释了在MVC项目中,一个请求的运转周期。不像我们以前直接到文件的地址一样的路径,可以直接指向一个文件。而MVC架构的框架决定了他不单单是那样的,不然就无法做到前台文件和逻辑代码的分离。

   这个东西并不在MVC框架的大框架里,但却依然是MVC框架中请求的核心部分。他是一个请求中URL重定向的主要途径,用来分配与指导你所请求的地址应该去哪里,应该去找哪一个控制器。他有一个路由表,表里记录的就是这些地址,而匹配上了之后,就会有相应的控制器被找到,继而进行下一步,进入控制器。

  他的配置方法是在项目根目录下的App_Start文件夹下RouteConfig.cs文件中。

  实例讲解:

  routes.MapRoute(

    name: "Default",   //该路由的名称

    url: "{controller}/{action}/{id}",  //路由规则
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }  //默认的路由,作用便是如果没有输入地址,则直接打开Home下的index.aspx文件,id是一个可选的参数。
  );

 

  Controller控制器

  他的任务是该做什么,却不是该怎么做。这是一个很重要的概念。我们程序的主要逻辑就是放在这里边的。他是MVC的一大特色。

  控制器文件放在项目根目录下的Controllers文件夹中,命名规范为 指向的文件夹名字+Controller.cs  譬如 homeController.cs 指向的就是 /Views/home文件夹,其管理的就是该文件夹下的文件。并且一般来说该文件夹是不会建立子文件夹的,因为如果写该子文件夹的控制器会比较麻烦,需要配置路由。一般项目里的文件就只会建一层文件夹。

  如果home文件夹下有文件index.aspx,那么在homeController.cs中就必须有一个方法名字叫index,可以是空返回值void,但是空返回值时是不会加载页面的,因为没有返回视图,也没有指示应该返回那个视图,将会是空页面。所以一般返回值都是ActionResult类型的。ActionRequest类型中,也可以是一些有其他需求的类型,譬如302重定向。那么就可以使用 return Redirect(string Url)来实现。 Redirect(string Url)方法返回值是RedirectResult,该类型是继承于ActionReturn的,所以可以直接使用。我们着重讲一下View()方法。这个方法可以指示返回的视图名字,譬如在index()方法中返回 View(“about”) 那么接下来打开的页面也许地址还是index的地址,但是内容却会变成about页面的内容,因为在返回的时候,指示了要返回about的视图。

  另外,Controller中的操作方法,譬如index()方法,是可以接受参数的,参数名字应该是在打开index.aspx页面时传入的参数,譬如 id 或者其他参数,在规定的时候,直接是给定参数类型的,譬如index(int id),这就致使在接收参数的时候,如果传入的不是一个int类型的数值,那么程序将直接报错。就好比方法是index(int id),调用的时候去却写的index()一样。这个时候可以使用MVC里的特殊语法?。将方法改成index(int? id)这个时候,如果没有传入ID或者传入的并不是一个int类型的参数,那么参数id将变成一个null。这也是?在mvc中的重要应用。这个时候index()方法中,就可以直接开始写程序逻辑代码,不用再写很多的输入值安全问题验证代码,增加代码的可读性。

   ViewBag对象。该对象可以自己定义其属性值,在程序执行到页面上之后,可以直接使用你在方法中定义的那些属性值。属性值名称自定义,类型是在赋值的时候自动匹配的,定义的是什么就是什么。在前台页面绑定的时候可以直接使用@符号来调用或者使用@{}代码段来使用。

  例:

  控制器中:ViewBag.aaa="测试文本";

  前台页面:@ViewBag.aaa

  输出"测试文本"。

 

   控制器中:ViewBag.sss=New string[]{"111","222"};

  前台页面:@{

          Foreach(string s in ViewBag.sss){

            <li>@s</li>

          }

        }

  输出:   <li>111</li>

      <li>222</li> 

   View视图

    其实这个就是页面的展示,里边主要放置的是HTML代码或者其他关于前台的东西。

  页面层也可以使用一些程序的东西的,使用方法就是使用@符号来定义。分为代码段和代码块,使用方法是@和@{}。

  页面中如果需要绑定CSS或者Javascript文件,可以在App_Start文件夹中的BundleConfig.cs文件中集中定义,方法RegisterBundles 中写入bundle.Add(new StyleBundle(“~/给这个样式集合的一个命名”)).Inclode(“~/样式文件地址”,”/可以添加多个。”,”中间用逗号隔开”);

  bundle.Add(new ScriptBundle(“~/给这个脚本文件的集合命名”)).Inclode(“~/跟样式一样。”);

  在页面中使用时:      

  @Styles.Render("~/Content/css")  //增加样式文件

  @Scripts.Render("~/bundles/modernizr")   //增加脚本文件

 

转载于:https://www.cnblogs.com/iiwen/p/MVC.html

你可能感兴趣的文章
Codeforces 173E Camping Groups 线段树
查看>>
【Java基础】Java中的持久属性集Properties
查看>>
NUMPY数据集练习 ----------SKLEARN类
查看>>
Python 2.X 版本 600行入门基础
查看>>
windows文件夹嵌套太多,导致无法删除的解决方法
查看>>
下拉刷新:继承listView控件
查看>>
SqlServer之代码块相关
查看>>
我的手机 不支持箭头函数
查看>>
TSQL语句中的Like用法
查看>>
ExtJs 4.x Ajax简单封装
查看>>
----斐波那契数列---eval函数----类递归思想 栈 进出 思想
查看>>
Yii2 的快速配置 api 服务 yii2-fast-api
查看>>
javascript学习笔记 null和undefined
查看>>
jquery easyui datagrid getSelections用法
查看>>
PHP 学习1.1
查看>>
Linux学习之服务器搭建——DHCP服务器
查看>>
垃圾收集算法
查看>>
二分查找
查看>>
数组去重
查看>>
mac编辑器coda使用小贴条
查看>>