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的子节点

原文地址:https://www.cnblogs.com/zhuyan-dailycheck/p/9916894.html