网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET MVC 3教程之控制器与视图

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/07

I:控制器和视图的基础概念

1.控制器的概念

控制器在ASP.NET MVC3当中是最终处理客户端请求的一个实现,他有个一硬性条件就是必须实现System.Web.Mvc.IController接口,而且类的命名必须要以Controller结尾,尽管按照硬性条件上来说,要自己实现一个接口比较纠结,但幸好的是在ASP.NET MVC3内部已经包含了一个默认的实现,我们只需要把类的命名设置为Controller结尾然后继承System.Web.Mvc.Controller类,立刻就可以轻松地实现了IController接口了.如果你不喜欢这种默认提供的实现方式,而是自己去实现IController的话.下面的代码可以做一个简单的参考:

  1. usingSystem.Web.Mvc;  
  2. usingSystem.Web.Routing;  
  3. namespaceMvcApplication1.Controllers  
  4. {  
  5. publicclassNoDefaultController: IController  
  6. {  
  7. voidIController.Execute(RequestContextrequestContext)  
  8. {  
  9. varhttpContext = requestContext.HttpContext;  
  10. varresponse = httpContext.Response;  
  11. response.ContentType = "text/html; charset=utf-8";  
  12. response.Write("自己的简单实现! Hello World");  
  13. }  
  14. }  

请注意:控制器类不硬性要求放在*.Controllers命名空间中

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" width="561" height="441" src="/uploadfile/201301/7/4195018166.png" />

如果是使用继承默认的类去实现的话代码如下:

  1. usingSystem.Web.Mvc;  
  2. namespaceMvcApplication1  
  3. {  
  4. publicclassHelloController: Controller  
  5. {  
  6. publicActionResultIndex()  
  7. {  
  8. returnContent("默认的实现! Hello World");  
  9. }  
  10. }  

效果图我就不发了.大家可以手动试一试.

2.视图的概念

视图的理解比较简单.你可以把视图理解为*.aspx或*.cshtml的文件.但是不是所有的aspx, cshtml文件都可以作为视图,它们必须得属于某一个以控制器名称命名的文件夹当中,而且要按照约定去存放到路径 ~/Views/{controller}/View.cshtml.

另外视图还包含解析他的ViewEngine(视图引擎),本文在这里不涉及这个高级话题.

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" width="433" height="607" src="/uploadfile/201301/7/4D95018709.png" />

我们可以看出在~/Views/{controller}/View.cshtml中的{controller}并不需要像类命名那样以Controller结尾去做文件夹名称.

3.工作原理图

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/7/5995018959.png" />

当然,内部的工作原理会比这个图复杂得多.在此也仅仅是让大家有个了解而已!如有错误请指出.谢谢!

提示:MvcHandler实现了IHttpAsyncHandler, IHttpHandler, IRequiresSessionState这三个接口,我在Debug进去的时候发现都是走异步的路线.对于这个处理方式,了解的人希望可以为我解答一下!

II:控制器

1.操作方法

操作方法的含义是指在继承了System.Web.Mvc.Controller类中所定义的返回值的类型可以兼容ActionResult的方法.

  1. usingSystem.Web.Mvc;  
  2. namespaceMvcApplication1.Controllers  
  3. {  
  4. publicclassHomeController: Controller  
  5. {  
  6. ///<summary>  
  7.  ///Hi, 我是Index操作方法  
  8. ///</summary>  
  9. ///<returns></returns>  
  10. publicActionResultIndex()  
  11. {  
  12.  ViewBag.Message = "Welcome to ASP.NET MVC!";  
  13. returnView();  
  14. }  
  15. ///<summary>  
  16. ///厄, 我是About操作方法  
  17. ///</summary>  
  18. ///<returns></returns>  
  19. publicActionResultAbout()  
  20. {  
  21. returnView();  
  22. }  
  23. ///<summary>  
  24. ///可以为方法添加不是操作方法的特性  
  25. ///</summary>  
  26. ///<returns></returns>  
  27. [NonAction]  
  28. publicstringNonAction()  
  29. {  
  30. return"亲,不好意思噢.我不是操作方法噢,请不要乱调用噢!";  
  31. }  
  32. }  
  33. }  
  34. 同时也可以使用[ActionName(“重命名操作方法”)]特性去重命名操作方法.  
  35. [ActionName("NewActionName")]  
  36. publicActionResultRenameAction()  
  37. {  
  38. returnContent("利用特性换个马甲");  

4

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号