走入asp.net mvc不归路:[2]控制器概览
asp.net mvc中最灵活的地方就是控制器,这里可以验证数据,可以跳转视图,还可以访问数据库等等。所以,我们要先从这里说起。
1 控制器就是继承了Controller的类,一般来说,类名后面都会增加"Controller"字样,asp.net mvc是一个约定优先的框架,在这里就能看到一点点端倪,接下来还要涉及到其他约定

2 这个控制器里面,有一些方法,其中图示的public并且返回值为ActionResult的方法就是所谓的Action,可以理解为动作、行为、功能等;图示就是登录功能。

3 在控制器中有各种元标记,如登录验证,HttpPost方法等;其中[Authorize]表示访问该控制器的任何动作,都需要登录,否则,则跳转到登录页面;而我们知道一个http请求,分为get和post方法,[HttpPost]就是用来指定只允许post请求访问的。

4 有时为了程序的需要,会定义一些辅助方法,一般来说,这些方法是private的

5 post方法中,一般会使用Model来保存数据,这个模型可以验证数据合法性,比如登录时,用户名不允许为空,密码应大于6位等;可以用ModelState.IsValidate来判断提交过来的数据是否合法,不合法的话,就返回。

6 在Action中可以直接返回一个视图,即return View(),而这个View()方法,重载多个方法,可以代入上面说到的模型,如此一来,当提交的数据有误时,直接返回时,原来的数据还会保留在原来页面

7 上面说到,没有指定相应的视图名,但是仍旧能够正常返回,为什么?这个就是上面提到约定。如果不指定视图名称,则系统会到默认的视图文件夹去寻找这个视图,寻找视图的会按照一定的顺序遍历,如果找到,则返回,否则往下寻找:首先搜索的是这个控制器对应的视图文件夹,事实上是有一个名叫Register的视图的,这样就找到了

8 可以这样子指定返回的视图名称,仍然可以带入与视图相应的Model

9 这样一来,在/Views/Account/文件夹下就找不到NoResource这个视图了,怎么办?框架会找到公共视图文件夹/Views/Shared/,图示是有这个视图的,所以上一步那样返回也不会出错;如果再找不到,那程序才会报错

10 控制器还可以控制其他方式的跳转;这样可以指定到其他控制器,图示为退出登录功能,一旦退出,则跳转到首页控制器的Index动作,即首页
、
11 实际上/Home/Index和/Home是一样的,因为默认情况下,只提供控制器的时候,框架会自动寻找Index方法,这个也是约定优先的另一个例子
12 控制器概况就先介绍到这里。祝您学习愉快!
本人原创,转载请注明出处。更佳视觉排版请移步:http://t.cn/RPJist6
走入asp.net mvc不归路:[2]控制器概览的更多相关文章
- 走入asp.net mvc不归路:[3]创建控制器
实际上,控制器就是一个类,一个继承自Controller的类.正常创建一个Controller即可,而问题在于asp.net mvc提供了一套便捷的方法,在创建一个Controller时,可以自动创建 ...
- 走入asp.net mvc不归路:[1]项目文件结构
先来了解一下一个asp.net mvc项目的文件结构. 1 项目文件结构一览 2 mvc,顾名思义,一个项目中最重要的就是这三个东西:M(Model,模型),V(View,视图),C(Controll ...
- 走入asp.net mvc不归路:[6]linq常见用法
asp.net mvc结合linq,先不说性能问题,对于增删查改的操作还是相当方便的.以下我们就来介绍一下linq在asp.net mvc的Controller中的常见用法. 1 首先来看看整个数据表 ...
- 走入asp.net mvc不归路:[5]Action的返回
asp.net mvc提供了多种返回方式,一方面使得视图可以重用,另一方面灵活强大,有直接返回视图,返回Json,返回文件流,返回到相同Controller的Action,返回到另一个Controll ...
- 走入asp.net mvc不归路:[4]说说Action有哪些常见成员
一个控制器中,功能最终会落实到一个个Action中实现,最常见的是增删查改操作.这些Action是一个个的方法,一般返回值是ActionResult,并且是public 方法,可以带参数,可以添加元标 ...
- ASP.NET MVC中使用异步控制器
线程池 一直想把项目改写成异步,但是ASP.NETMVC3下写的过于繁琐,.NET 4.5与ASP.NET MVC下代码写起来就比较简单了, MS好像也一直喜欢这样搞,每一个成熟的东西,都要演变好几个 ...
- asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染
在asp.net mvc 使用ajax请求获取数据的时候,我们一般是返回json或者xml,然后解析这些数据进行渲染,这样会比较麻烦,可以请求一个 分部action,返回一个分部视图 直接可以渲染,不 ...
- 将Asp.Net MVC应用程序的控制器定义在单独的程序集(类库)中
一直以来都想把控制器的代码部署到单独的程序集里.昨天研究Asp.Net MVC的源代码,偶然发现有一个奇特的类“ControllerBuilder”,MSDN上的介绍相当简略,就一句话“表示一个类,该 ...
- 在 ASP.NET MVC 中使用异步控制器
线程池 一直想把项目改写成异步,但是ASP.NETMVC3下写的过于繁琐,.NET 4.5与ASP.NET MVC下代码写起来就比较简单了, MS好像也一直喜欢这样搞,每一个成熟的东西,都要演变好几个 ...
随机推荐
- hdu 5437
Alisha’s Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- WIN10配置JDK
系统变量→新建 JAVA_HOME 变量 变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0) 系统变量→寻找 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\bin ...
- MIP启发式算法:爬山算法 (Hill climbing)
本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法中的爬山算法 (Hill climbing). 目录 前言 Hill climbing 的过程 ...
- PAT Basic 1056
1056 组合数的和 给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出:25.28. ...
- ES6(Module模块化)
模块化 ES6的模块化的基本规则或特点: 1:每一个模块只加载一次, 每一个JS只执行一次, 如果下次再去加载同目录下同文件,直接从内存中读取. 一个模块就是一个单例,或者说就是一个对象: 2:每一个 ...
- python基础学习笔记——包
包的简介 你们听到的包,可不是女同胞疯狂喜欢的那个包,我们来看看这个是啥包 官方解释: 1 2 3 4 5 6 7 8 9 Packages are a way of structuring Pyth ...
- Wp 导航到手机定位设置页面
WP开放了很多选择器和启动器,找了半天没发现有打开定位设置页面的,找了好久终于找到了解决办法: await Windows.System.Launcher.LaunchUriAsync(new Uri ...
- NYOJ 232 How to eat more Banana
How to eat more Banana 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 A group of researchers are designing ...
- 注册苹果开发者账号和iOS9打包上线
链接: http://www.jianshu.com/p/507ca4e5fde0 http://blog.csdn.net/a283127993/article/details/45828175 i ...
- 【Luogu】P1383高级打字机
可持久化线段树模板题之一. 权当温习主席树模板 #include<cstdio> #include<cstdlib> #include<cctype> #defin ...