ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启动运行,以及命名约定,创建控制器,视图,模型,接收参数,传递数据,路由,页面布局等内容,今天继续讲解ASP.NET Core MVC wwwroot和客户端库等相关内容,仅供学习分享使用。

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

 

wwwroot文件夹概述

 

通过模板创建的ASP.NET Core MVC项目,会在程序根目录创建一个wwwroot文件夹。此文件夹又称为webroot文件夹,主要用于存放静态资源文件,如:html,JavaScript,css样式等内容。默认情况下,存在wwwroot文件夹下的所有静态资源都可以通过Http请求提供服务。在新的框架中,且只有存放于wwwroot目录下的静态资源可以直接通过Http访问,其他目录下的静态资源都将阻止。

 

静态资源中间件

 

为了使wwwroot目录下的静态资源能够被Http直接访问,需要在程序启动时【Program.cs】加载静态资源中间件。如下所示:

 1 var builder = WebApplication.CreateBuilder(args);
 2 
 3 // Add services to the container.
 4 builder.Services.AddControllersWithViews();
 5 
 6 var app = builder.Build();
 7 
 8 // Configure the HTTP request pipeline.
 9 if (!app.Environment.IsDevelopment())
10 {
11     app.UseExceptionHandler("/Home/Error");
12     // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
13     app.UseHsts();
14 }
15 
16 app.UseHttpsRedirection();
17 
18 //1. 启动静态资源服务中间件
19 app.UseStaticFiles();
20 
21 app.UseRouting();
22 
23 app.UseAuthorization();
24 
25 app.MapControllerRoute(
26     name: "default",
27     pattern: "{controller=Home}/{action=Index}/{id?}");
28 
29 app.Run();

 

静态资源示例

 

创建程序后,直接运行,会通过路由设置,默认加载Home/Index页面,如下所示:

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

在wwwroot目录下,创建index.html,内容如下所示:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8" />
 5     <title>静态首页</title>
 6 </head>
 7 <body>
 8     <h1>公子小六</h1>
 9     <h2>这是静态首页</h2>
10 </body>
11 </html>

在Program.cs启动文件中,添加默认文件中间件【app.UseDefaultFiles();】,如下所示:

 1 var builder = WebApplication.CreateBuilder(args);
 2 // Add services to the container.
 3 builder.Services.AddControllersWithViews();
 4 var app = builder.Build();
 5 // Configure the HTTP request pipeline.
 6 if (!app.Environment.IsDevelopment())
 7 {
 8     app.UseExceptionHandler("/Home/Error");
 9     // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
10     app.UseHsts();
11 }
12 app.UseHttpsRedirection();
13 
14 
15 //0. 允许默认文件映射
16 app.UseDefaultFiles();
17 //1. 启动静态资源服务中间件
18 app.UseStaticFiles();
19 
20 
21 app.UseRouting();
22 app.UseAuthorization();
23 app.MapControllerRoute(
24     name: "default",
25     pattern: "{controller=Home}/{action=Index}/{id?}");
26 
27 app.Run();

再次运行程序,会发现静态默认首页Index.html会替换之前默认的Home/Index路由视图,如下所示:

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

通过以上示例得出在结论:默认静态资源首页优先级高于默认路由。

 

修改默认资源名称

 

默认启动静态资源名称为Index.html,可以通过DefaultFilesOptions指定默认的首页加载顺序和名称。如下所示:

 1 var builder = WebApplication.CreateBuilder(args);
 2 // Add services to the container.
 3 builder.Services.AddControllersWithViews();
 4 var app = builder.Build();
 5 // Configure the HTTP request pipeline.
 6 if (!app.Environment.IsDevelopment())
 7 {
 8     app.UseExceptionHandler("/Home/Error");
 9     // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
10     app.UseHsts();
11 }
12 app.UseHttpsRedirection();
13 
14 //默认文件启动项
15 DefaultFilesOptions options = new DefaultFilesOptions();
16 options.DefaultFileNames.Add("Hello.html");
17 //0. 允许默认文件映射
18 app.UseDefaultFiles(options);
19 
20 //1. 启动静态资源服务中间件
21 app.UseStaticFiles();
22 
23 app.UseRouting();
24 app.UseAuthorization();
25 app.MapControllerRoute(
26     name: "default",
27     pattern: "{controller=Home}/{action=Index}/{id?}");
28 
29 app.Run();

修改后再次启动,发现加载的依然是Index.html,而不是Hello.html。经过调试发现,DefaultFilesOptions的默认加载页面,会自动填充4个默认页面名称。后面添加的页面名称会在原有默认页面之后。如下所示:

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

 经过以上分析,删除默认的index.html页面,重新启动,默认首页变成了Hello.html页面,如下所示:

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

 静态资源文件除了可以通过静态资源中间件来实现【app.UseStaticFiles()】,还可以通过文件服务中间件来实现,如下所示:

1 FileServerOptions options = new FileServerOptions();
2 options.DefaultFilesOptions.DefaultFileNames.Add("Hello.html");
3 app.UseFileServer(options);

 

修改静态资源目录

 

默认的静态资源目录为wwwroot,一般也是通用的webroot文件夹名称,如果需要修改成其他目录 ,可以通过WebApplication.CreateBuilder(options)中的选项进行修改,接线所示:

1 WebApplicationOptions weboptions = new WebApplicationOptions() { WebRootPath="wwwroot2" };
2 var builder = WebApplication.CreateBuilder(weboptions);

修改后,重新运行程序,如下所示:

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

注意:为了让wwwroot2生效,必须修改原有的wwwrooot文件名称或者删除wwwroot文件夹,否则wwwroot2将不生效。

 

客户端库

 

客户端库主要是指JavaScript,CSS等第三方库,在ASP.NET Core MVC项目中,安装客户端库如下所示:

在项目名称处右键,选择添加,客户端库,如下所示:

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

 在打开的客户端库添加窗口,可以选择需要的库名称,进行搜索,然后进行安装即可,如下所示:

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

 安装成功后,在目标位置即可进行查看,如下所示:

ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

以上就是关于ASP.NET Core MVC项目中wwwroot和客户端库相关内容。关于客户端库在安装成功后,如何在页面中引用,将在后续章节中进行介绍。

 

原文链接:https://www.cnblogs.com/hsiang/p/17328107.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Core MVC 从入门到精通之wwwroot和客户端库 - Python技术站

(0)
上一篇 2023年4月25日
下一篇 2023年4月25日

相关文章

  • C#调用和实现WebService,纯手工打造!

    C#调用和实现WebService,纯手工打造! 在这个教程中,我们将学习如何使用C#语言调用和实现WebService。Web服务是一种基于网络的通信协议,用于让不同的应用程序之间进行交互。Web服务提供数据和方法,供其他应用程序使用。我们将介绍如何使用C#语言编写简单的Web服务并以两个示例说明如何调用它。 实现WebService 以下是基于C#语言手…

    C# 2023年6月6日
    00
  • 基于C#实现网络爬虫 C#抓取网页Html源码

    下面是“基于C#实现网络爬虫 C#抓取网页Html源码”的完整攻略: 一、网络爬虫简介 网络爬虫,也称为网络蜘蛛、网络机器人等,是一种自动化的程序,用于在互联网上通过各种方式获取信息。 二、C#抓取网页Html源码 1. 使用C#自带的WebClient类 C#自带的WebClient类可以轻松地访问网页,并将其HTML源码下载到本地。下面是一个示例代码: …

    C# 2023年6月6日
    00
  • c#调用c++方法介绍,window api

    C#调用C++方法介绍 简介 C#是一种高级编程语言,而C++是一种中级编程语言,在底层处理方面有着突出的优势。将C++模块集成到C#应用程序中,可以利用C++的性能和底层优势来完成一些高性能任务。在实际应用中,使用C#调用C++模块的场景非常普遍,例如Windows API和某些组件库都是基于C++编写的,但是由于其底层特性和页面优化等方面,利用C#调用C…

    C# 2023年6月7日
    00
  • C#微信分享代码

    下面是C#微信分享代码的完整攻略。 什么是微信分享? 微信分享是指在微信中分享某个网页、图片或音视频等内容,让其它人能够看到并进行相应的操作。微信分享有两种方式,一种是分享到朋友圈,另一种是分享给好友。微信分享通常需要使用到微信开放平台提供的API。 如何进行微信分享? 进行微信分享需要完成以下步骤: 在微信开放平台创建应用并获取AppID和AppSecre…

    C# 2023年5月31日
    00
  • C# Linq的ToArray()方法 – 将序列转换为数组

    C#中Linq的ToArray()方法可将元素集合转化为数组形式,其函数声明如下: public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source); ToArray()方法接收一个IEnumerable集合对象参数,并返回其对应的TSource类型数…

    C# 2023年4月19日
    00
  • c#实现sqlserver2005实体类生成器工具示例

    介绍 c#实现sqlserver2005实体类生成器工具是一个常用的工具,用于快速生成与数据库中表对应的实体类,可以大大提高开发效率。下面将详细讲解如何使用这个工具。 步骤 1.准备工作 首先,需要在电脑上安装Visual Studio等开发环境以及SQL Server Management Studio等数据库管理工具。 2.安装工具 可以通过NuGet包…

    C# 2023年5月15日
    00
  • C#实现顺序队列和链队列的代码实例

    针对“C#实现顺序队列和链队列的代码实例”的完整攻略,我将逐一进行讲解,分别包含如下几个部分: 简述队列的概念和特点; 实现顺序队列的代码解析及样例说明; 实现链队列的代码解析及样例说明。 1. 队列的概念和特点 队列是一种常用的数据结构,它的特点是先进先出(FIFO)。 它的基本操作有两个:入队和出队。其中入队是在队列尾插入一个元素,而出队是在队列头删除一…

    C# 2023年6月7日
    00
  • C#中Span相关的性能优化建议

    标题:C#中Span相关的性能优化建议 简介 Span是C#中新增的一种类型,它能够提升数组和字符串的性能表现。下面将给出几个优化建议,帮助开发者正确使用Span。 优化建议 使用Span替换数组 数组是一种引用类型,存放在堆中,而且会由垃圾回收器回收。这个过程比较耗时,所以使用数组可能会降低程序的性能。使用Span可以很好地解决这个问题。 示例: // 使…

    C# 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部