控制器的定义

  • MVC模式下的控制器(Controller)主要负责响应用户的输入,并且在响应时可能的修改模型(Model)。
  • 之前的URL访问,通常是通过指定服务器的路径来实现,如访问URL:http://www.example.com/hello.html ,是访问域名为http://www.example.com 这台服务器上面根目录下的hello.html文件,但MVC与之不同。URL首先告知路由机制实例化哪个控制器,调用哪个方法,并为该方法提供必要的参数;然后由控制器的方法来决定使用哪个视图,并负责对该视图进行渲染。因此,在ASP.NET MVC中,URL并不与存储在Web服务器磁盘上的文件有对应的关系。
  • MVC提供的是方法调用的结果,而不是动态生成的页面。

简单示例:HomeController

  • 新建一个默认的ASP.NET MVC项目
  • 展开项目目录下的Controller子目录,将会看到名为HomeController控制器的类(HomeController.cs)。
  • 可以看到,这个类继承自Controller基类,定位到About方法,将“Your application description page”修改为任意的短语,如“My application description page,hihihi~”
  • 运行项目,浏览到/Home/About,查看结果。

创建控制器

  • 右击Controller目录->添加->控制器->MVC 5 控制器 空->添加->键入控制器名称:StoreController->添加

  • 此时控制器的类内只有Index方法,当浏览到/Store时,调用此Index方法,选择和渲染视图。

  • 修改控制器内的方法:将Index方法返回值改为string,并将方法内的全部代码改为“return "Hello from Store.Index()";”。添加Browse和Details方法。完成后的控制器如下:

      public string Index()
    {
    return "Hello from Store.Index()";
    } public string Browse()
    {
    return Hello from Store.Browse()";
    } public string Details()
    {
    return Hello from Store.Details()";
    }
  • 运行项目,浏览/Store,/Store/Browse,/Store/Details,查看结果。

  • 总结:如上所示,只需要浏览到/Store就可以执行StoreController类中的Index方法,浏览到/Store/Detals就可以执行Details方法,这就是所谓的路由,所有的请求都是通过控制器进行处理;此外,判断一个类是否是控制器类的惟一方法是查看该类是否继承自System.Web.Mvc.Controller

最新文章

  1. Web安全相关(四):过多发布(Over Posting)
  2. sqlserver中根据表中的配置概率取到数据
  3. entity framework 新手入门篇(3)-entity framework实现orderby,count,groupby,like,in,分页等
  4. ddms(基于 Express 的表单管理系统)源码学习
  5. lua以xpcall实现try/catch功能
  6. BZOJ1012[JSOI2008]最大数maxnumber 题解
  7. CentOS 7 为firewalld添加开放端口及相关资料
  8. [原创]cocos2d-x研习录-第二阶 概念类之节点类(CCNode)
  9. Web开发中错误页面的配置
  10. 《samba服务配置的文本》
  11. 【POJ1707】【伯努利数】Sum of powers
  12. java时间格式转换
  13. django-debug-toolbar
  14. PB数据库相关
  15. AppiumDriver升级到2.0.0版本引发的问题--Cannot instantiate the type AppiumDriver
  16. vijos 1557:bzoj:1413: [ZJOI2009]取石子游戏
  17. 【原创】自己动手实现JDK动态代理
  18. PLC漏洞问题
  19. Python基础(函数,函数的定义,函数的调用,函数的参数,递归函数)
  20. Android app内存限制OOM

热门文章

  1. 【matlab】GPU 显卡版本与计算能力(compute capability)兼容性问题
  2. 【codeforces 791C】Bear and Different Names
  3. SQLite做为本地缓存的应用需要注意的地方
  4. CentOS 6.5开放80端口方法
  5. ASP.NET中前台如何调用后台变量
  6. webpack之font-awesome
  7. 怎么会float交换器int
  8. WPF 窗体中获取键盘和鼠标无操作时的超时提示
  9. 带农历日历的DatePicker控件!Xamarin控件开发小记
  10. IAA32过程调用保护规则注册