ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程

简介: 原文:ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 MVC 前面几章节中,我们都是基于 ASP.

原文:ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程

ASP.NET Core 配置 MVC

前面几章节中,我们都是基于 ASP.NET 空项目 模板创建的 HelloWorld 上做开发

通过这个最基本的 HelloWorld 项目,我们了解了很多知识,初窥了 ASP.NET Core,并对 ASP.NET Core 的运行机制有了一个基本的了解

MVC 模式是 Web 开发中最重要的一个模式之一,通过 MVC,我们可以将控制器、模型和视图区分开来

ASP.NET Core 同样支持 MVC 模式,而且是通过中间件的形式来支持 MVC 模式的开发

MVC 中间件

一般情况下,ASP.NET Core 2.1 内置并下载了 Microsoft.AspNetCore.Mvc 程序集

所以我们并不需要使用 NuGet 来做一些额外的安装

我们只需要给我们的应用程序中注册 Microsoft.AspNetCore.Mvc 中间件即可

配置 MVC 中间件

我们需要将 ASP.NET Core MVC 所需的所有服务注册到运行时中

我们在 Startup 类中的 ConfigureServices() 方法中执行此操作

注册完毕后,我们将添加一个简单的控制器,然后使用控制器做一些简单的输出

  1. 我们先在跟目录下创建一个目录 Controllers 目录,用于存放所有的控制器

    右键点击 HelloWorld 项目,然后选择 添加 -> 新建文件夹,并把文件夹命名为 Controllers

  2. 添加完成后 解决方案资源管理器 中显示如下

  3. 右键点击 Controllers 目录,然后选择 添加 -> 新建文件 打开新建文件对话框

    如果你的电脑是 Windows ,则是 添加 -> 新建项

  4. 在新建文件对话框中,选中左边的 General,然后选中右边的 空类

    如果你的电脑是 Windows ,则是先选中 ASP.NET Core 下的 代码 , 然后选中

  5. 在名称中输入 HomeController,然后点击右下角的 新建 按钮,创建一个 HomeController.cs 文件

    如果你的电脑是 Windows ,则是点击右下角的 新建 按钮

  6. 添加完成后 解决方案资源管理器 中显示如下

  7. 同时可以看到 HomeController.cs 中的内容如下

    using System;
    namespace HelloWorld.Controllers
    {
        public class HomeController
        {
            public HomeController()
            {
            }
        }
    }
    
  8. 接下来我们将设置 HomeController 类为我们的默认控制器,也就是访问 / 时默认使用 HomeController 来处理

  9. 修改 HomeController.cs 文件,为类 HomeController 类添加一个 Index() 方法

    public string Index()
    { 
        return "你好,世界! 此消息来自 HomeController..."; 
    }
    

    文件全部内容如下

    using System;
    namespace HelloWorld.Controllers
    {
        public class HomeController
        {
            public HomeController()
            {
            }
    
            public string Index()
            { 
                return "你好,世界! 此消息来自 HomeController..."; 
            }
        }
    }
    
  10. 保存 **HomeController.cs文件,重新启动应用并刷新浏览器,显示的仍然是index.html` 中的内容

  11. 现在,我们删除 wwwroot 目录下的 index.html 文件

    右键点击 index.html 文件,然后选择 删除,在弹出的对话框中点击 删除 按钮

  12. 然后我们回到 Startup.cs 文件中,在 Configure() 方法中的 app.UseFileServer(); 语句后面添加一条语句 app.UseMvcWithDefaultRoute();

    Startup.cs 文件全部代码如下

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Configuration;
    
    namespace HelloWorld
    {
        public class Startup
        {
            public Startup() 
            { 
                var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("AppSettings.json");
                Configuration = builder.Build(); 
            }
    
            public IConfiguration Configuration { get; set; }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
            public void ConfigureServices(IServiceCollection services)
            {
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                app.UseFileServer();
                app.UseMvcWithDefaultRoute();
    
                /*
                app.Run(async (context) =>
                {
                    var msg = Configuration["message"];
                    await context.Response.WriteAsync(msg);
                });
                */
            }
        }
    }
    
  13. 保存 Startup.cs 文件,重新启动应用,会发现启动失败,出错如下

    System.InvalidOperationException: "Unable to find the required services. Please add all the required services by calling 'IServiceCollection.AddMvc' inside the call to 'ConfigureServices(...)' in the application startup code."
    

    意思是 ASP.NET Core 没有找到必须的 Mvc 服务

    ASP.NET 核心框架本身由具有非常专注的责任的不同小型组件组成

    例如,有一个组件必须定位和实例化控制器,但该组件需要位于 ASP.NET Core MVC 的服务集合中才能正常运行

注册 MVC 服务

为了在 ASP.NET Core 中使用 MVC 模式,我们必须在 Startup 类中的 ConfigureServices 方法中添加 AddMvc 服务

public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } 

添加成功后,完整的 Startup.cs 文件如下

using System;
using System.IO; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; namespace HelloWorld { public class Startup { public Startup() { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("AppSettings.json"); Configuration = builder.Build(); } public IConfiguration Configuration { get; set; } // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseFileServer(); app.UseMvcWithDefaultRoute(); /*  app.Run(async (context) =>  {  var msg = Configuration["message"];  await context.Response.WriteAsync(msg);  });  */ } } } 

保存 Startup.cs 文件,重新启动应用,刷新浏览器,终于可以看到结果了

 
目录
相关文章
|
7月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
618 6
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:<https://github.com/khellang/Scrutor>
671 5
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
372 0
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
454 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
679 5
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
414 1
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
480 3
mcr.microsoft.com/dotnet/core/aspnet:2.1安装libgdiplus
mcr.microsoft.com/dotnet/core/aspnet:2.1安装libgdiplus
234 1
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
379 0
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
802 0