• ASP.NET MVC


    一、ASP.NET是创建Web应用的框架,MVC是可以用更好的方法管理并组织代码的高级架构体系。

    二、ASP.NET Web Form的优势

    基于VS提供的可视化编程,可以简单的拖拽UI控件,后台自动生成代码。

    三、ASP.NET Web Form的问题

    (1)响应时间:服务器响应请求的时间

    (2)带宽消耗:同时传输多少数据

    响应时间为什么会变长:每次请求都有转换逻辑,运行并把服务器控件转换为HTML输出。这些转换增加了响应时间。解决方案是摆脱后台代码,写成纯HTML

    带宽问题:Viewstates可以自动保存post返回状态,减少开发时间,但是会带来巨大的消耗——增加页面大小。解决方案是不使用服务器控件,直接写HTML代码

    四、MVC

    Controller中包含后台代码逻辑(核心)、View是ASPX(运行在服务器的动态网页文件)、如纯HTML代码、 Model是中间层

    整体改变是将View办成简单的HTML代码,后台代码移动到.NET类中,称为控制器

    ASP.NET MVC请求流的步骤:

    (1)获取控制器

    (2)依赖行为控制器创建Model对象,Model通过转换调用数据访问层

    (3)数据填充Model,传递到View显示层,实现显示目的

    五、Controller控制器

    1、用户交互逻辑:能够处理用户请求以及用户交互行为的业务逻辑成为用户交互逻辑(用户交互逻辑写在服务器端

    2、在Web编程中没有事件的概念,ASP.NET Web Forms根据我们的行为自动创建了处理代码,所以回到自我们觉得是事件驱动的编程。流

    六、使用VS新建ASP.NET MVC

    1、新建ASP.NET MVC5项目

    2、添加空MVC5控制器

    在新建的时候,添加空 MVC 5 Controller是要注意名称中必须保留“controller”关键字,如:TestController,DemoController

    如图示:

    3、创建行为方法

    在已经生成的代码中替换掉“Index”类,改为简单输出GetString()

    namespace ASP.NET_WEB.Controllers
    {
        public class TestController : Controller
        {
            public string GetString()
            {
                return "Hello World  Hello OHaYo";
            }
        }
    }

    注意:在运行的时候,需要手动在地址栏中输入尾缀“ControllerName/ActionName”,输入控制器的名字时,去掉关键字“Controller”,在本例中控制器的名字是“TestController”,所以输入“Test”即可。

    具体效果如图示:

    七、实验一

    问题:TestController 与 Test 之间的关系是什么?

    答案:TestController是类的名称,而Test是controller的名称,所以在URL中输入controller名称时,要去掉controller

    问题:Action方法是什么?

    答案:Controller内置的一个public类型方法,可以接收并处理用户的请求。

    在ASP.NET Web Forms中默认的返回类型是HTML,如果需要返回其他类型请求,需要创建HTTP处理器,重写内容类型。String类型可以直接返回,不需要完整的HTML内容

    问题:从Action方法中返回对象值会出现什么?

    答案:会调用toString()方法,返回NameSpace.className形式的类名

    问题:Action方法是不是只能用public修饰符修饰?

    答案:是的,每个共有的方法都可以成为Action方法

    问题:非public方法是什么?

    答案:类的方法比较简单,并且不是公共可用的,无法再Web中调用

    问题:如果需要一些其他函数来完成特定功能,但不是Action方法要如何实现?

    答案:使用NonAction属性修饰,示例代码如下:

    [NonAction]
            public string SimpleMethod()
            {
                return "Hi I am not the Action Method";
            }

    八、View部分

    Controller是对用户请求做出响应,通常是显示在浏览器页面中。在ASP.NET MVC中将用户界面设计UI层称为View

    实验二

    1、创建新的Action方法

    public ActionResult GetView()
            {
                return View("MyView");
            }

    2、右击新创建的Action方法,选择“添加视图”,将视图名称改为“MyView”,取消“使用布局”选项。新添加的视图文件在View / Test中。这里就是纯HTML代码了

    问题:为什么View会放在Test文件夹中?

    答案:View与放置在特定目录下的Controller有关,文件夹是用“ControllerName”命名的。实例中的ControllerName是Test,所以放在Test文件夹中

    问题:在多个控制器中无法重用View吗?

    答案:是可以的,不过需要将View文件放在特定的Shared文件夹中就可以让多个Controller使用

    问题:单个Action方法中可以引用多个View吗?

    答案:ASP.NET MVC中 View与Controller不是严格匹配的,一个Action方法可以引用多个View。对于一个Action方法中,也可以使用if语句来选择View

    例如:

    public ActionResult GetView()
            {
                Random i = new Random();
                int x = i.Next(1, 10);
                if (x > 5)
                {
                    return View("SecondView");
                }
                else
                {
                    return View("MyView");
                }
            }

    问题:View函数的功能是什么?

    答案:创建ViewResult对象来渲染视图反馈给用户,就是用户看到的UI界面

    问题:ViewResult与ActionResult的关系?

    答案:ActionResult是抽象类,而ViewResult是ActionResult的多级节点孩子。是因为ViewResult是ViewResultBase的子节点,而ViewResultBase是ActionResult的子节点

    问题:什么是ContentResylt?

    答案:ViewResult是HTML响应,而ContentResult是标准的文本响应,只返回字符串类型。后者是ActionResutl的子节点

  • 相关阅读:
    Mybaits 的优点
    mybatis中#{}和${}的区别
    springmvc工作流程
    request对象的主要方法有哪些
    如何决定选用HashMap还是TreeMap?
    队列和栈是什么,列出它们的区别?
    fail-fast与fail-safe有什么区别?
    Collections类是什么?
    哪些集合类提供对元素的随机访问?
    可以作为GC Roots的对象包括哪些
  • 原文地址:https://www.cnblogs.com/zhuyan-dailycheck/p/9916894.html
Copyright © 2020-2023  润新知