zoukankan      html  css  js  c++  java
  • 走入asp.net mvc不归路:[2]控制器概览

    asp.net mvc中最灵活的地方就是控制器,这里可以验证数据,可以跳转视图,还可以访问数据库等等。所以,我们要先从这里说起。

    1 控制器就是继承了Controller的类,一般来说,类名后面都会增加"Controller"字样,asp.net mvc是一个约定优先的框架,在这里就能看到一点点端倪,接下来还要涉及到其他约定

    clipboard

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

    clipboard[1]

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

    clipboard[2]

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

    clipboard[3]

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

    clipboard[4]

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

    clipboard[5]

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

    clipboard[6]

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

    clipboard[7]

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

    clipboard[8]

    10 控制器还可以控制其他方式的跳转;这样可以指定到其他控制器,图示为退出登录功能,一旦退出,则跳转到首页控制器的Index动作,即首页

    clipboard[9]

    11 实际上/Home/Index和/Home是一样的,因为默认情况下,只提供控制器的时候,框架会自动寻找Index方法,这个也是约定优先的另一个例子

    12 控制器概况就先介绍到这里。祝您学习愉快!

    本人原创,转载请注明出处。更佳视觉排版请移步:http://t.cn/RPJist6

  • 相关阅读:
    C# 数据为空,不能对NULL调用此方法或属性的解决办法
    Hadoop开启后jps显示只有jps
    Ubuntu中eclipse端口被占
    Ubuntu在终端执行命令时出现的错误
    sudo passwd root输入普通用户密码后显示用户不再sudoers文件中
    周总结(4.4)
    《构建之法》读后感(三)
    周总结(3.28)
    软件工程团队项目介绍
    解决phpstudy中nginx服务器运行项目报错404问题
  • 原文地址:https://www.cnblogs.com/xiaxiazl/p/3887523.html
Copyright © 2011-2022 走看看