MVC学习笔记一
主要是为了复习昨天所学习到的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")
//增加脚本文件
MVC学习笔记一的更多相关文章
- MVC学习笔记索引帖
[MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习 ...
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- ASP.NET MVC学习笔记-----Filter
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
- .NET MVC 学习笔记(一)— 新建MVC工程
一..NET MVC 学习笔记(一)—— 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...
随机推荐
- 【CodeForces 698A】Vacations
f[i][0..2]表示第i天休息|运动|比赛最少的休息天数. #include <cstdio> #include <cstring> #include <algori ...
- 深入理解Java多态机制
从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...
- 【BZOJ-1692&1640】队列变换 后缀数组 + 贪心
1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1153 Solved: 482[Submit][St ...
- Hadoop的RPC分析
一.基础知识 原理 http://www.cnblogs.com/edisonchou/p/4285817.html,这个谢了一些rpc与hadoop的例子. 用到了java的动态代理,服务端实现一个 ...
- Jenkins项目构建结果通知Email的替代方案Wall Display插件
插件:https://wiki.jenkins-ci.org/display/JENKINS/Wall+Display+Plugin 效果: 操作: 直接在一个大屏幕上打开这个项目的构建页面,那么每次 ...
- Ubuntu各文件夹功能说明
通常情况下,根文件系统所占空间一般应该比较小,因为其中的绝大部分文件都不需要经常改动,而且包括严格的文件和一个小的不经常改变的文件系统不容易损坏.除了可能的一个叫/vmlinuz标准的系统引导映像之外 ...
- python统计nginx脚本信息
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import json import subprocess import th ...
- 谈谈JavaScript MVC模式
第一个是:没有使用mvc模式的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- ASP.NET MVC 给ViewBag赋值Html格式字符串的显示问题总结
今天再给自己总结一下,关于ViewBag赋值Html格式值,但是在web页显示不正常; 例如,ViewBag.Content = "<p>你好,我现在测试一个东西.</p& ...
- AngularJs $resource 高大上的数据交互
$resource 创建一个resource对象的工厂函数,可以让你安全的和RESFUL服务端进行数据交互. 需要注入 ngResource 模块.angular-resource[.min].js ...