走入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好像也一直喜欢这样搞,每一个成熟的东西,都要演变好几个 ...
随机推荐
- Verilog学习笔记基本语法篇(一)·········数据类型
Verilog中共有19种数据类型. 基本的四种类型: reg型.wire型.integer型.parameter型. 其他类型:large型.medium型.small型.scalared型.tim ...
- 快速入门Pandas
教你十分钟学会使用pandas. pandas是python数据分析的一个最重要的工具. 基本使用 # 一般以pd作为pandas的缩写 import pandas as pd # 读取文件 df = ...
- PAT Basic 1027
1027 打印沙漏 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行 ...
- python模块--random
random主要用于生成随机字符串等,例如登录页面上随机字符串验证. random常用方法: import random print(random.randrange(1, 10)) # 返回1-10 ...
- Service Broadcast简单音乐播放功能
在Activity上有两个ImageButton,分别控制播放/暂停.停止. @Override public void onCreate(Bundle savedInstanceState) ...
- log4j动态日志级别调整
1. 针对root logger的设置 log4j.rootLogger=INFO, CONSOLELogger.getRootLogger().setLevel(org.apache.log4j.L ...
- x86保护模式-七中断和异常
x86保护模式-七中断和异常 386相比较之前的cpu 增强了中断处理能力 并且引入了 异常概念 一 80386的中断和异常 为了支持多任务和虚拟存储器等功能,386把外部中断称为中断 ...
- EasyUI 打印当前页
function CommonPrint(printDatagrid, type) { var tableString = '<table cellspacing="0" c ...
- 04-offsetLeft和style.left的区别
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 02-JSON
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...