目录

本文出自《从零开始学 ASP.NET CORE MVC》目录 
视频课程效果更佳:从零开始学 Asp.Net Core MVC

在ASP.NET Core 中安装 MVC

在本视频中,我们将讨论在 ASP.NET Core 应用程序中设置 MVC。

到目前为止,我们在本系列视频中使用的 ASP.NET Core 项目是使用“空”项目模板生成的。目前这个项目没有设置和安装 MVC。

两个步骤学会在 ASP.NET Core 配置 MVC

步骤 1:在 Startup.cs 文件中的 Startup 类的**ConfigureServices()**方法中,见下方代码。 这行代码将所需的 MVC 服务添加到 asp.net core 中的依赖注入容器中。

services.AddMvc();

步骤 2:在 Configure()方法中,将**UseMvcWithDefaultRoute()**中间件添加到我们的应用程序的请求处理管道中。 修改代码,如下所示。

public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment())    {        app.UseDeveloperExceptionPage();    }

    app.UseStaticFiles();

    app.UseMvcWithDefaultRoute();

    app.Run(async (context) =>    {await context.Response.WriteAsync("Hello World!");    });}

注意,我们在**UseMvcWithDefaultRoute()中间件之前放置了UseStaticFiles()中间件。 此顺序很重要,因为如果请求是针对静态文件(如图像,CSS 或 JavaScript 文件),则UseStaticFiles()**中间件将处理请求并使管道的其余部分短路。

因此, 如果请求是针对静态文件, 则不会执行**UseMvcWithDefaultRoute () **中间件, 从而避免不必要的处理。

另一方面, 如果请求是 MVC 请求, **UseStaticFiles ()**中间件将把该请求传递给 UseMvcWithDefaultRoute() 中间件, 中间件将处理请求并生成响应。

请注意, 除了UseMvcWithDefaultRoute () 中间件之外, 我们还有**UseMvc ()**中间件。现在, 让我们使用 UseMvcWithDefaultRoute() 中间件。

在我们即将推出的视频中, 当我们讨论路由时, 我们将讨论这两个中间件之间的区别。

此时,如果我们运行应用程序并导航到 URL -http://localhost:49119,我们会看到“Hello World!” 消息显示在浏览器中。

  • 使用管道中配置的 UseMvcWithDefaultRoute()中间件,当我们向 URL 发出请求时 - http://localhost:49119

  • 由于请求不是针对静态文件,因此 UseStaticFiles()中间件会将请求传递给 UseMvcWithDefaultRoute()中间件

  • 由于我们尚未在 URL 中指定控制器和操作方法段,因此 UseMvcWithDefaultRoute()中间件在 HomeController 中查找 Index()方法。

  • 由于目前我们的应用程序中没有 HomeController,因此 UseMvcWithDefaultRoute()中间件将请求传递给使用 Run()方法注册的中间件,因此我们看到“Hello World!” 此中间件生成的消息。

现在让我们看看,如果我们删除 Run()中间件会发生什么。 此时,Configure()方法中的代码必须如下所示。

public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment())    {        app.UseDeveloperExceptionPage();    }

    app.UseStaticFiles();

    app.UseMvcWithDefaultRoute();}

有了上面的代码,如果我们再次向 URL 发出请求 - http://localhost:49119,我们现在看到 404 错误。 这是因为 UseMvcWithDefaultRoute()中间件没有找到带有 Index()动作的 HomeController,并且管道中没有其他中间件,所以我们看到 404 错误。

添加 HomeController

在项目根文件夹中添加 Controllers 文件夹。 在“控制器”中添加一个新的控制器。 复制并粘贴以下代码。

public class HomeController{public string Index()    {return "Hello from MVC";    }}

生成解决方案并向应用程序 URL 发出请求 - http://localhost:49119。 现在,您将看到浏览器中显示的字符串 - “Hello from MVC”。

在 ASP.NET Core 中安装 MVC相关推荐

  1. ASP.NET Core中使用MediatR实现命令和中介者模式

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9866068.html 在本文中,我将解释命令模式,以及如何利用基于命令模式的第三方库来实现它们,以及如何 ...

  2. [译]ASP.NET Core中使用MediatR实现命令和中介者模式

    在本文中,我将解释命令模式,以及如何利用基于命令模式的第三方库来实现它们,以及如何在ASP.NET Core中使用它来解决我们的问题并使代码简洁.因此,我们将通过下面的主题来进行相关的讲解. 什么是命 ...

  3. asp.net nancy_如何在ASP.Net Core中使用Nancy

    asp.net nancy Nancy是用于构建基于HTTP的服务的轻量级框架. Nancy更喜欢约定而不是配置,并提供对GET,HEAD,POST,PUT,DELETE和PATCH操作的支持. Na ...

  4. 如何在ASP.Net Core中使用Nancy

    Nancy是用于构建基于HTTP的服务的轻量级框架. Nancy更喜欢约定而不是配置,并提供对GET,HEAD,POST,PUT,DELETE和PATCH操作的支持. Nancy在MIT许可下也是开源 ...

  5. 在ASP.NET Core 3.1 MVC中集成Vue.js V4和使用Dropzone文件上传

    目录 介绍 先决条件 Node.js的介绍 您已经安装了Node.js/NPM吗? Node/ NPM版本相关的常见错误 Vue.js简介 安装Vue.js V4 NET Core介绍 安装Visua ...

  6. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...

    在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...

  7. ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)...

    在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入. P ...

  8. 《从零开始学ASP.NET CORE MVC》:ASP.NET Core 中的 Main方法(5)

    本文出自<从零开始学ASP.NET CORE MVC> 推荐文章:ASP.NET Core Web 项目文件 ASP.NET Core 中的 Main方法 一个开始专心写字的人 在ASP. ...

  9. 如何使用C#在ASP.NET Core中轻松实现QRCoder

    by Yogi 由瑜伽士 如何使用C#在ASP.NET Core中轻松实现QRCoder (How to easily implement QRCoder in ASP.NET Core using ...

最新文章

  1. python实现Anderson-Darling正态分布检验
  2. python3 __import__ 简介
  3. C++ 常用函数总结
  4. document write的用法
  5. P4310-绝世好题【位运算,dp】
  6. 使用vo注释做一个poi导出功能
  7. python地图散点图_在地图上叠加散点图(img)
  8. 解决python中html 代码被注释掉 依旧被解释导致报错ERROR:tornado.access:500 GET /home (xxx.xxx.xxx.xxx)
  9. linux祖先进程,Linux下的几种特殊进程
  10. 基于物品的相似度还是基于用户的相似度
  11. 用IE和Google 浏览器的比较。。
  12. 12306一直提示网络有问题_春运10日拉开大幕 买票遇到问题?别慌!这里有答案...
  13. ArcGIS为什么计算面积被禁用
  14. 语音领域视频课程及书籍(不定期更新)
  15. 交换机和路由器的区别计算机网络,交换机和路由器的区别,教您交换机和路由器的区别...
  16. 【原创】基于Springboot、WebSocket的一对一聊天室
  17. 最新虚拟机SAP ECC6.0 EHP7带示例数据IDES版+BW740
  18. 微服务分布式架构中,如何高效收集请求/响应日志
  19. VS编译失败,找不到源文件!!!
  20. Linux关闭防火墙命令总结

热门文章

  1. div方框弯曲边样式_使用弯曲样式编辑文本
  2. hdmi-cec_如何使用HDMI-CEC使用PlayStation 4或Pro自动打开电视
  3. 自定义v-drag指令(横向拖拽滚动)
  4. 大数据对六大领域的挑战
  5. 阿里云欧洲数据中心开放运营:与沃达丰达成战略合作
  6. HDU1232 畅通工程
  7. java 生成无重复 随机数
  8. SQL Sever 性能调优
  9. 使用域超级管理员打开Exchange 2010发现没有权限
  10. 为什么这个SQL Server DBA学习PowerShell--SQL任务