MVC初级知识之——View与Controller的讲解
Controller是MVC中比较重要的一部分。几乎所有的业务逻辑都是在这里进行处理的,并且从Model中取出数据。在ASP.NET MVC Preview5中,将原来的Controller类一分为二,分为了Controller类和ControllerBase类。Controller类继承自ControllerBase类,而ControllerBase实现是了IController接口。
ControllerBase实现了IController接口的Execute方法,在Route匹配到Controller之后,就会调用Execute方法来进入Controller的处理。这里还定义了一个抽象的方法ExecuteCore方法,该方法会在Execute方法的最后被调用。Controller类还定义很多有用的方法,我们新建的Controller都必须继承自这个Controller类。例如我们新建一个AdminController:
下面谈一下在Controller中比较重要的Action方法。在ASPNET MVC中URL都是映射到Controller中的某个Action中,然后由匹配的Action来处理我们的业务逻辑并返回view的。Controller中的public的方法都被当作是Action方法。Action方法通常返回一个ActionResult的结果。默认情况下,Action方法的方法名就是这个Action的Action名(Action名指的是Route中匹配Action方法的URL的那部分。例如url:Home/Index,其中Index就是Action名)。
ASP.NET MVC为我们提供了几种ActionResult的实现
最常用
ActionResult Action方法返回ActionResult类型的结果。
FileResult写入文件内容,具体的写入方式在派生类中
PartialViewResult调用父类ViewResultBase的ExecuteResult方法。
重写了父类的FindView方法。
JsonResult.返回SON结果。由Json方法返回。
不常用
ViewResult.呈现视图页给客户端。由View方法返回。
RedirectToRouteResult.重定向到另外一个Route。由RedirectToAction 和RedirectToRoute方法返回。
RedirectResult.重定向到另外一个URL。由Redirect方法返回。
ContentResult.返回普通的内容。例如一段字符串。由Content方法返回。
EmptyResult.如果Action必须返回空值,可以返回这个结果。Controller中没有实现的方法,可以return new EmptyResult();
Action方法的参数
例如我们要在AdminController中定义一个编辑日志的Action方法:
对于URL:Admin/EditPost/2,上面的参数会自动被赋值为2。ASP.NET MVC在匹配Route的时候会根据Route的设置自动为Action方法的参数赋值。所以前面的id参数会被自动赋值为2的前提是,在Route配置的时候,必须指定了id参数,例如:
- Viewstart.cshtml是一个在呈现View文件的时候的启动文件,会在所有View(.cshtml)被执行之前执行。
- 注意,是在View被呈现的时候才会调用Viewstart.cshtml,如果一个View是按照PartialView(分布页不会调用母版页)的方式输出的,则不会触发_Viewstart.cshtml中的代码。
- 如果在View的某个目录下(例如Home目录)也有一个同名的ViewStart.cshtm文件,那么这个_ViewStart也会被调用,但是最先调用的还是最外面的_Viewstart,然后再是Home目录下的ViewStart。
一个完整的View是通过与Layout和其他局部View组合而来,如何开发一个Layout?
@RenderBody0
当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容
会通过布局页面的@RenderBody()方法呈现在标签之间。
@Html.Partial("_LoginPartial")
可以调用局部的分布页呈现在当前区域。
@RenderSection("footer",false)
布局页面还有节(Section)的概念,也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来。
当然还要在视图中定义节,否则会出现异常:
@section footer{
<div>Hello word</div>
}
实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download
MVC初级知识之——View与Controller的讲解的更多相关文章
- Spring MVC基础知识整理➣View与Controller数据交互
概述 Spring MVC是由View—Controller—Model组成,其中View和Controller的数据交互,成为了关注的核心点.MVC中,我们将View中的数据传递到Controlle ...
- MVC初级知识之——Routing路由
实例产品基于asp.net mvc 5.0框架,源码下载地址:http://www.jinhusns.com/Products/Download 我们注意到地址栏的URL是Home/Index 路由可 ...
- MVC 的知识
MVC 的知识 下载地址: 1. NET Framework4下载地址: http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyI ...
- Asp.Net Core 入门(四)—— Model、View、Controller
和我们学习Asp.Net MVC一样,Asp.Net Core MVC的Model.View.Controller也和我们熟悉的Asp.Net MVC中的相似.不同的是我们在使用Asp.Net Cor ...
- ASP.NET MVC 学习笔记1 Talk about controller & route
For the sake of learning programming better, I'd like to increase the frequency of using English. So ...
- MVC(Model(模型) View(视图) Controller(控制器))
复习 1. 商品表 增删改查 index.php add.php view.php edit.php action.php 2. MVC(Model(模型) Vie ...
- MVC模式(Model View Controller)下实现数据库的连接,对数据的删,查操作
MVC模式(Model View Controller): Model:DAO模型 View:JSP 在页面上填写java代码实现显示 Controller:Servlet 重定向和请求的转发: 若 ...
- ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller
ASP.NET MVC中的Model(数据模型)主要包括定义数据结构.数据库读写.数据验证等等和对象处理相关的工作. 在解决方案资源管理器中找到Model文件夹,点击右键,添加一个新类,名为“Mess ...
- ASP.NET MVC View向Controller提交数据
我们知道使用MVC的一个很重的的用途就是把Controller和View之间进行解耦,通过控制器来调用不同的视图,这就注定了Controller和View之间的传值是一个很重的知识点,这篇博文主要解释 ...
随机推荐
- Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)
之前写过一篇博客"探索TFS Git 库文件换行(CRLF)的处理方式",主要是针对TFVC代码库的. 下面这篇文章说明如何在TFS的Git库中处理代码换行的问题. 概述 在Azu ...
- linux03
linux day31.正则表达式 \* ------重复0无数次 \+ ------重复1 无数次 ^ -------开头 $ -------结尾 | ------或 & ----- 与 ( ...
- Linux基础命令-cd
cd 作用:切换路径 切换至家目录 $ cd $ cd~ 在上一个目录和当前目录来回切换 $ cd - 切换至某用户的家目录 # cd ~ # pwd /root # cd ~quail #pwd / ...
- 跟踪spring MVC的请求
当我们点击一个超链接时,spring MVC在后台都做了些什么呢,今天就来看看后台都干了啥 首先需要在web.xml里配置一下:
- SQL面试题之行转列
典型的课程表: mysql> select * from course; +----+------------+----------+------------+ | id | teacher_i ...
- Go指南练习 rot13Reader
题目: 练习:rot13Reader 有种常见的模式是一个 io.Reader 包装另一个 io.Reader,然后通过某种方式修改其数据流. 例如,gzip.NewReader 函数接受一个 io. ...
- centos7 完整配置openvpn详情教程
1. 什么是OpenVpn OpenVPN 是一个用于创建虚拟专用网络加密通道的软件包,最早是由James Yonan编写的.OpenVPN允许创建的VPN使用公开密钥.电子证书.或者用户名/密码来进 ...
- 基于GTK+3 开发远程控制管理软件(C语言实现)系列 一 开篇
近期趁公司没项目来,想学习一下C和GTK+3 ,顺道再学习一下Linux下有关网络编程方面的知识. 一.学习知识: 1.C基本语法 2.GTK+3 API学习 GUI相关知识学习 3.Glade使用及 ...
- 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 2、Practice Questions
1.以下哪一项是正确的?(检查所有适用的) (A,D,F,G) A. a[2] 表示第二层的激活函数值向量. B. X 是一个矩阵, 其中每一行都是一个训练示例. C. a[2] (12) 表示第二 ...
- linux使用find和crontab命令定期清理过期文件
crontab 命令 crontab 命令是 Linux 中用来设定重复执行命令或脚本的工具.它能够在指定的时间段内,按照需求以某一时间间隔执行命令或脚本. crontab 的基本用法 crontab ...