Web应用 布局

时间:2023-12-22 19:06:44

asp.net core系列 44 Web应用 布局

一.概述

  MVC的视图与Razor页面经常共享视觉和程序元素,通过使用布局来完成,布局还可减少重复代码。本章演示了以下内容的操作方法:(1)使用通用布局,(2)自定义布局,(3) 共享指令,(4)在呈现Razor页面或MVC视图之前运行通用代码。

  大多数 Web 应用都有一个通用布局,可在页面间切换时,为用户提供一致体验。 布局通常包括应用页头、导航或菜单、页脚等常见的用户界面元素,还有经常使用script和css等常用的 HTML 结构。 所有这些共享元素均可在布局文件中进行定义,在Content内容视图中套用布局来共享视觉和程序元素。

Web应用 布局

  

  1.1 默认布局

    按照约定: ASP.NET Core 应用的默认布局名为 _Layout.cshtml。 在vs中创建ASP.NET Core 项目使用模板的布局文件如下所示:

    (1) Razor页面的布局:Pages/Shared/_Layout.cshtml

        Web应用 布局

    (2) Mvc视图的布局: Views/Shared/_Layout.cshtml

        Web应用 布局

    下面的代码是创建的项目模板,默认的_Layout的布局文件:

Web应用 布局
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
@* viewport兼容移动端 *@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - StudyMVCDemo</title> @* 定义不同的环境加载不同的css文件 *@
<environment include="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute"
crossorigin="anonymous"
integrity="sha256-eSi1q2PG6J7g7ib17yAaWMcrr5GrtohYChqibrV7PBE="/>
</environment>
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body> @*页头区 定义页面导航 *@
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-controller="Movies" asp-action="Index">StudyMVCDemo</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse"
                aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
</ul>
</div>
</div>
</nav>
</header> @*内容区 调用RenderBody 来呈现内容视图 *@
<div class="container">
@* GDPR(个人数据保护条例)协议的支持,关联UseCookiePolicy*@
<partial name="_CookieConsentPartial" />
<main role="main" class="pb-3">
@RenderBody()
</main>
</div> @*页脚区 *@
<footer class="border-top footer text-muted">
<div class="container">
&copy; 2019 - StudyMVCDemo - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</div>
</footer> @* 定义不同的环境加载不同的js文件 *@
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
</environment>
<environment exclude="Development">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.bundle.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha256-E/V4cWE4qvAeO5MOhjtGtqDzPndRO1LBk8lJ/PR7CA4=">
</script>
</environment>
<script src="~/js/site.js" asp-append-version="true"></script> @* RenderSection是加载内容视图中的js文件, Scripts是一个节点名称。
例如:在Privacy.cshtml内容视图中,需要加载一个1.js文件,下面使用节点名称Scripts。
@section Scripts {
<script src="~/lib/jquery/dist/1.js"></script>
}
*@
@RenderSection("Scripts", required: false)
</body>
</html>
Web应用 布局

  

  1.2 自定义布局

    上面的布局_Layout是通过_ViewStart.cshtml 分部视图来指定的。在应用程序中可以定义多个布局,并且不同的视图指定不同的布局,下面新建一个_MyLayout.cshtml布局,在Privacy.cshtml视图中应用布局,代码如下:

    (1) _MyLayout.cshtml布局

Web应用 布局
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - StudyMVCDemo</title>
</head>
<body>
<header>
<div style="height:50px; width:auto; text-align:center; border:solid red 1px" >_MyLayout页头</div>
</header> <div class="container">
<partial name="_CookieConsentPartial" />
<main role="main" class="pb-3">
@RenderBody()
</main>
</div> <footer class="border-top footer text-muted">
<div style="height:50px; width:auto; text-align:center; border:solid red 1px">_MyLayout页尾</div>
</footer> </body>
</html>
Web应用 布局

    (2) Privacy.cshtml视图中应用布局

@{
ViewData["Title"] = "Privacy Policy";
Layout = "_MyLayout";
}
<h1>@ViewData["Title"]</h1>

    Privacy页面应用布局后效果如下:

Web应用 布局

  1.3  共享指令_ViewImports.cshtml 

    MVC视图和Razor页面可以使用 Razor 指令来导入命名空间并使用依赖项注入。 由多个视图共享的指令可以在通用 _ViewImports.cshtml 文件中进行指定。 _ViewImports 文件支持以下指令:

      @addTagHelper

      @removeTagHelper

      @tagHelperPrefix

      @using

      @model

      @inherits

      @inject

    _ViewImports.cshtml 文件可以放在任何文件夹中,在这种情况下,它只会应用于该文件夹及其子文件夹中的页面或视图。 可以在不同视图目录存放_ViewImports.cshtml。 这样文件夹级别覆盖根级别指定的 _ViewImports 设置。默认是存放在根级别下(见图1.1)。  新建项目默认引入的共享指令如下:

      @using StudyMVCDemo
   @using StudyMVCDemo.Models
   @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

    如果去掉using StudyMVCDemo.Models,在其它内容视图页引用实体时(比如:@model Movie),会生成时报错。

    

  1.4 _ViewStart.cshtml

    需要在每个MVC视图或Razor页面之前,运行的代码应放在_ViewStart.cshtml文件中。 在呈现每个完整视图(不是布局页,也不是分部视图页)之前运行 _ViewStart.cshtml 中列出的语句。与_ViewImports.cshtml一样也是分层结构。比如该页默认指定的布局是Layout 。

    @{
     Layout = "_Layout";
    }

  参考文献

    ASP.NET Core 中的布局

asp.net core系列 45 Web应用 模型绑定和验证
摘要: 一. 模型绑定 ASP.NET Core MVC 中的模型绑定,是将 HTTP 请求中的数据映射到action方法参数。 这些参数可能是简单类型的参数,如字符串、整数或浮点数,也可能是复杂类型的参数。 当 MVC 收到 HTTP 请求时,它会将此请求路由定位到控制器的指定action方法。默认路由模阅读全文

posted @ 2019-03-20 10:43 花阴偷移 阅读(250) | 评论 (0) 编辑

asp.net core系列 44 Web应用 布局
摘要: 一.概述 MVC的视图与Razor页面经常共享视觉和程序元素,通过使用布局来完成,布局还可减少重复代码。本章演示了以下内容的操作方法:(1)使用通用布局,(2)自定义布局,(3) 共享指令,(4)在呈现Razor页面或MVC视图之前运行通用代码。 大多数 Web 应用都有一个通用布局,可在页面间切换阅读全文

posted @ 2019-03-19 09:05 花阴偷移 阅读(386) | 评论 (0) 编辑

asp.net core系列 43 Web应用 Session分布式存储(in memory与Redis)
摘要: 一.概述 HTTP 是无状态的协议。 默认情况下,HTTP 请求是不保留用户值或应用状态的独立消息。 本文介绍了几种保留请求间用户数据和应用状态的方法。下面以表格形式列出这些存储方式,本篇专讲Session会话状态,计划下篇再讲应用状态。 存储方法 存储机制 依赖关系注入 服务器端应用代码 1.1 阅读全文

posted @ 2019-03-18 09:43 花阴偷移 阅读(373) | 评论 (3) 编辑

asp.net core系列 42 Web 应用 分部视图
摘要: 一.分部视图 对于MVC 视图和 Razor Pages 页面,都有分部视图功能。通常将 MVC 视图和 Razor Pages 页面统称为“标记文件”,下面会常提到该名词。使用分部视图的优势包括:(1) 将大型标记文件分解为更小的组件。(2) 减少跨标记文件中,常见标记内容的重复。 建议:(1)不阅读全文

posted @ 2019-03-14 10:35 花阴偷移 阅读(328) | 评论 (1) 编辑

asp.net core系列 41 Web 应用 MVC视图
摘要: 一.MVC视图 在Web开发的MVC和Razor中,都有使用视图,在Razor中称为"页"。.cshtml视图是嵌入了Razor标记的HTML模板。 Razor 标记使用C#代码,用于与HTML 标记交互以生成发送给客户端的网页。在MVC目录结构中,Views / [ControllerName] 阅读全文

posted @ 2019-03-13 11:56 花阴偷移 阅读(300) | 评论 (0) 编辑

asp.net core系列 40 Web 应用MVC 介绍与详细示例
摘要: 一. MVC介绍 MVC架构模式有助于实现关注点分离。视图和控制器均依赖于模型。 但是,模型既不依赖于视图,也不依赖于控制器。 这是分离的一个关键优势。 这种分离允许模型独立于可视化展示进行构建和测试。ASP.NET Core MVC 包括以下功能: 路由、模型绑定、模型验证、依赖关系注入、筛选器、阅读全文

posted @ 2019-03-11 14:56 花阴偷移 阅读(511) | 评论 (0) 编辑

asp.net core系列 39 Web 应用Razor 介绍与详细示例
摘要: 一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor。 这样开发Web包括了MVC框架和Razor框架。对于Razor来说它是一个新特性,在官方介绍ASP.NET Core的优点中提到“Razor Pages可以使基于页面阅读全文

posted @ 2019-03-08 10:17 花阴偷移 阅读(153) | 评论 (0) 编辑

asp.net core系列 38 WebAPI 返回类型与响应格式--必备
摘要: 一.返回类型 ASP.NET Core 提供以下 Web API Action方法返回类型选项,以及说明每种返回类型的最佳适用情况: (1) 固定类型 (2) IActionResult (3) ActionResult<T> 1.1 固定类型 最简单的操作是返回基元或复杂数据类型(如 string阅读全文

posted @ 2019-03-06 11:59 花阴偷移 阅读(547) | 评论 (0) 编辑

asp.net core系列 37 WebAPI 使用OpenAPI (swagger)中间件
摘要: 一.概述 在使用Web API时,对于开发人员来说,了解其各种方法可能是一项挑战。在ASP.NET Core上,Web api 辅助工具介绍二个中间件,包括:Swashbuckle和NSwag .NET。本篇先讲Swashbuckle。二者都使用Swagger规范,Swagger也称为OpenAPI阅读全文

posted @ 2019-03-05 11:24 花阴偷移 阅读(415) | 评论 (0) 编辑

asp.net core系列 36 WebAPI 搭建详细示例
摘要: 一.概述 HTTP不仅仅用于提供网页。HTTP也是构建公开服务和数据的API强大平台。HTTP简单灵活且无处不在。几乎任何你能想到的平台都有一个HTTP库,因此HTTP服务可以覆盖广泛的客户端,包括浏览器,移动设备和传统的桌面应用程序。 ASP.NET Web API 是一个框架,基于.NET Fr阅读全文

posted @ 2019-03-04 11:47 花阴偷移 阅读(1164) | 评论 (0) 编辑

asp.net core系列 35 EF保存数据(2) -- EF系列结束
摘要: 一.事务 (1) 事务接着上篇继续讲完。如果使用了多种数据访问技术,来访问关系型数据库,则可能希望在这些不同技术所执行的操作之间共享事务。下面示例显示了如何在同一事务中执行 ADO.NET SqlClient 操作和 Entity Framework Core 操作。 (2) 使用 System.T阅读全文

posted @ 2019-03-01 11:54 花阴偷移 阅读(361) | 评论 (0) 编辑

asp.net core系列 34 EF保存数据(1)
摘要: 一. 基本数据 每个EF上下文实例都有一个 ChangeTracker(更改跟踪器),它负责跟踪需要写入数据库的更改。 当更改实体类的实例时(修改属性,删除实例,新建实例等),这些更改会记录在 ChangeTracker 中,然后在调用 SaveChanges 时被写入数据库。 此数据库提供程序负责阅读全文

posted @ 2019-02-28 16:00 花阴偷移 阅读(333) | 评论 (0) 编辑

asp.net core系列 33 EF查询数据 (2)
摘要: 一. 原生SQL查询 接着上篇讲。通过 Entity Framework Core 可以在使用关系数据库时下降到原始 SQL 查询。 在无法使用 LINQ 表达要执行的查询时,或因使用 LINQ 查询而导致低效的 SQL 查询时非常有用。 原始 SQL 查询可返回实体类型,或者从 EF Core 2阅读全文

posted @ 2019-02-27 16:09 花阴偷移 阅读(285) | 评论 (2) 编辑

asp.net core系列 32 EF查询数据 必备知识(1)
摘要: 一.查询的工作原理 Entity Framework Core 使用语言集成查询 (LINQ) 来查询数据库中的数据。 通过 LINQ 可使用 C#(或你选择的其他 .NET 语言)基于派生上下文和实体类编写强类型查询。 LINQ 查询的表示形式会传递给数据库提供程序,进而转换为特定的数据库查询语言阅读全文

posted @ 2019-02-26 16:22 花阴偷移 阅读(320) | 评论 (2) 编辑

asp.net core系列 31 EF管理数据库架构--必备知识 反向工程
摘要: 一. 反向工程 反向工程是基于数据库架构,生成的实体类和DbContext类代码的过程,对于Visual Studio开发,建议使用PMC。对于其他开发环境,请选择.NET Core CLI工具(跨平台)。 (1) 在程序包管理器控制台(PMC)工具中使用命令Scaffold-DbContext 来阅读全文

posted @ 2019-02-25 13:57 花阴偷移 阅读(472) | 评论 (0) 编辑

asp.net core系列 30 EF管理数据库架构--必备知识 迁移
摘要: 一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步。一是以 EF Core 模型为基准,二是以数据库为基准。 (1)如果希望以 EF Core 模型为准,请使用迁移。 对 EF Core 模型进行更改时,此方法会以增量方式将相应架构更改应用到数据库,阅读全文

posted @ 2019-02-22 16:19 花阴偷移 阅读(500) | 评论 (2) 编辑

asp.net core系列 29 EF模型配置(查询类型,关系数据库建模)
摘要: 一.查询类型 此功能是EF Core 2.1中的新功能。 EF Core除了实体类型之外,EF Core模型还可以包含查询类型,这些查询类型是针对“未映射到实体类型”的数据获取。比如视图,或只读数据表。 1.1 下面介绍下,查询类型与实体类型共同与不同点: (1) 可以在OnModelCreatin阅读全文

posted @ 2019-02-21 17:39 花阴偷移 阅读(236) | 评论 (2) 编辑

asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型)
摘要: 一. 支持字段 EF允许读取或写入字段而不是一个属性。在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用。无法使用数据注释配置。除了约定,还可以使用Fluent API为属性配置支持字段。 1.1 约定 1.2 Fluent API 二. 构造函数 从开始 EF阅读全文

posted @ 2019-02-20 17:47 花阴偷移 阅读(290) | 评论 (2) 编辑

asp.net core系列 27 EF模型配置(索引,备用键,继承)
摘要: 一.索引 索引是许多数据存储中的常见概念。虽然它们在数据存储中的实现可能会有所不同,但它们可用于更有效地基于列(或列集)进行查找。按照约定,用作外键每个属性 (或组的属性) 会自动创建索引。无法使用数据注释创建索引。 1.1 非唯一索引 Fluent API 在单个属性上指定索引。默认情况下,索引是阅读全文

posted @ 2019-02-19 12:29 花阴偷移 阅读(280) | 评论 (0) 编辑

asp.net core系列 26 EF模型配置(实体关系)
摘要: 一.概述 EF实体关系定义了两个实体互相关联起来(主体实体和依赖实体的关系,对应数据库中主表和子表关系)。 在关系型数据库中,这种表示是通过外键约束来体现。本篇主要讲一对多的关系。先了解下描述关系的术语。 (1) 依赖实体: 这是包含外键属性的实体(子表)。有时称为 child 。 (2) 主体实体阅读全文

posted @ 2019-02-18 15:18 花阴偷移 阅读(268) | 评论 (0) 编辑

asp.net core系列 25 EF模型配置(隐藏属性)
摘要: 一. 隐藏属性概述 隐藏属性也叫影子属性,该属性不是在.net实体类中定义的属性,而是在EFCore模型中为该实体类型定义的属性。这些属性的值和状态完全在变更跟踪器中维护。它有二个功能:(1)当数据库中某些字段不想映射到实体类上公开的属性时,隐藏属性非常有用。(2)隐藏属性通常是用于外键属性,其中两阅读全文

posted @ 2019-02-17 11:19 花阴偷移 阅读(247) | 评论 (0) 编辑

asp.net core系列 24 EF模型配置(主键,生成值,最大长度,并发标记)
摘要: 一.主键 键用作每个实体实例的主要唯一标识符。 使用关系数据库时,这会映射到主键的概念。 还可以配置不是主键的唯一标识符。按照约定,名为 Id 或 <type name>Id 的属性会配置为实体的键。例如下面二个示例: 除了上面讲到的约定,还可以用数据注释将单个属性配置为实体的键,下面示例使用数据注阅读全文

posted @ 2019-02-16 09:49 花阴偷移 阅读(313) | 评论 (0) 编辑

asp.net core系列 23 EF模型配置(概述, 类型和属性的包含与排除)
摘要: 一.模型配置概述 EF使用一组约定基于实体类的定义来构建模型。 可指定其他配置以补充或替代约定的内容。本系列介绍的配置可应用于面向任何数据存储的模型,以及面向任意关系数据库时可应用的配置。 数据库提供程序还可支持特定于具体数据存储的配置,如Microsoft.EntityFrameworkCore.阅读全文

posted @ 2019-02-15 09:25 花阴偷移 阅读(332) | 评论 (0) 编辑

asp.net core 系列 22 EF(连接字符串,连接复原,DbContext)
摘要: 一.连接字符串 在上二篇中,ASP.NET Core 应用程序连接字符串是写死在ConfigureServices代码中,下面介绍通过配置来实现。连接字符串可以存储在 appsettings.json、用户机密存储、其他配置源中。 下面示例演示appsettings.json 中存储的连接字符串,这阅读全文

posted @ 2019-02-14 09:47 花阴偷移 阅读(540) | 评论 (0) 编辑

asp.net core 系列 21 EF现有数据库进行反向工程
摘要: 一.概述 在上篇中使用EF基于数据模型创建数据库, 本篇继续使用 EF 基于数据库创建数据模型。 实现对已有数据库进行反向工程,来构建数据访问的 ASP.NET Core MVC 应用程序。已有数据库使用上篇的EFGetStarted.AspNetCore.NewDb库。这里还是使用Visual S阅读全文

posted @ 2019-02-13 09:32 花阴偷移 阅读(517) | 评论 (0) 编辑

asp.net core 系列 20 EF基于数据模型创建数据库
摘要: 一.概述 本章使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序。使用迁移(migrations)基于数据模型创建数据库,是一种code first模式。可以在Windows 上使用 Visual Studio 2017,或在 Win阅读全文

posted @ 2019-02-12 09:43 花阴偷移 阅读(574) | 评论 (2) 编辑

asp.net core 系列 19 EFCore介绍
摘要: 一.概述 目前最新的EF Core版本是3.0,最稳定的EF Core版本是2.2。EF Core 的计划与 .NET Core以及 ASP.NET Core 版本同步。EF Core 是一个 .NET Standard库,使用 EF Core 开发面向 .NET Core 的应用。生成 .NET 阅读全文

posted @ 2019-01-30 09:42 花阴偷移 阅读(711) | 评论 (1) 编辑

asp.net core 系列 18 web服务器实现
摘要: 一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module。该模块是插入 IIS 管道的本机 IIS 模块(本机是指程序所部署的服务器)。是基于windows平台处理 IIS和进程内IISHttpServer或Kes阅读全文

posted @ 2019-01-29 09:17 花阴偷移 阅读(722) | 评论 (2) 编辑

asp.net core 系列 17 通用主机 IHostBuilder
摘要: 一.概述 ASP.NET Core 通用主机 (HostBuilder),该主机对于托管不处理 HTTP 请求的应用非常有用。通用主机的目标是将 HTTP 管道从 Web 主机 API 中分离出来,从而启用更多的主机方案。 基于通用主机的消息、后台任务和其他非 HTTP 工作负载可从横切功能(如配置阅读全文

posted @ 2019-01-28 09:13 花阴偷移 阅读(425) | 评论 (0) 编辑

asp.net core 系列 16 Web主机 IWebHostBuilder
摘要: 一.概述 在asp.net core中,Host主机负责应用程序启动和生存期管理。host主机包括Web 主机(IWebHostBuilder)和通用主机(IHostBuilder)。Web 主机是适用于托管 Web 应用;通用主机(ASP.NET Core 2.1 或更高版本)是适用于托管非 We阅读全文

posted @ 2019-01-25 11:06 花阴偷移 阅读(332) | 评论 (2) 编辑

asp.net core 系列 15 中间件
摘要: 一.概述 中间件(也叫中间件组件)是一种装配到应用管道以处理请求和响应的软件。 每个组件:(1)选择是否将请求传递到管道中的下一个组件;(2)可以在管道中的下一个组件之前和之后执行工作。 请求委托用于生成请求管道。 请求委托会处理每个 HTTP 请求。使用以下方法配置请求委托:Run, Map, U阅读全文

posted @ 2019-01-24 10:26 花阴偷移 阅读(592) | 评论 (0) 编辑

asp.net core 系列 14 错误处理
摘要: 一.概述 本文介绍处理 ASP.NET Core 应用中常见错误的一些方法。主要是关于:开发环境异常页;非开发环境配置自定义异常处理页;配置状态代码页(没有正文响应,http状态400~599的)。 1.1 开发环境异常页 要将应用配置为显示有关异常的详细信息的页面,请使用开发环境异常页。要环境设置阅读全文

posted @ 2019-01-23 09:17 花阴偷移 阅读(449) | 评论 (0) 编辑

asp.net core 系列 13 日志
摘要: 一.概述 ASP.NET Core 支持适用于各种内置和第三方日志记录, 供程序的日志记录 API,本文介绍了如何将日志记录 API 与内置提供程序一起使用。对于第三方日志记录提供程序使用,文章最后有链接。 1.1 添加内置日志提供程序 日志记录提供程序能够用于显示日志信息或存储日志,比如控制台提供阅读全文

posted @ 2019-01-22 09:44 花阴偷移 阅读(590) | 评论 (2) 编辑

asp.net core 系列 12 选项 TOptions
摘要: 一.概述 本章讲的选项模式是对Configuration配置的功能扩展。 讲这篇时有个专用名词叫“选项类(TOptions)” 。该选项类作用是指:把选项类中的属性与配置来源中的键关联起来。举个例,假设json文件有个Option1键,选项类中也有个叫Option1的属性名,经过选项配置,这样就能把阅读全文

posted @ 2019-01-21 11:47 花阴偷移 阅读(472) | 评论 (0) 编辑

asp.net core 系列 11 配置configuration (下)
摘要: 四. 文件配置提供程序AddIniFile、 AddXmlFile、AddJsonFile FileConfigurationProvider 是从文件系统加载配置的基类。 以下配置提供程序专用于特定文件类型: (1) INI 配置提供程序 IniConfigurationProvider: Fil阅读全文

posted @ 2019-01-18 14:06 花阴偷移 阅读(426) | 评论 (0) 编辑

asp.net core 系列 10 配置configuration (上)
摘要: 一. ASP.NET Core 中的配置概述 ASP.NET Core 中的应用配置是基于键值对,由configuration 程序提供。 configuration 将从各种配置源提供程序操作键值对,这些配置源可以是: (1) Azure Key Vault(是基于云的服务的安全存储应用机密) (阅读全文

posted @ 2019-01-17 17:39 花阴偷移 阅读(477) | 评论 (0) 编辑

asp.net core 系列 9 环境(Development、Staging 、Production)
摘要: 一.在asp.net core中使用多个环境 ASP.NET Core 配置是基于运行时环境, 使用环境变量。ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONMENT,并将该值存储在 IHostingEnvironment.EnvironmentName 中。A阅读全文

posted @ 2019-01-16 15:00 花阴偷移 阅读(570) | 评论 (6) 编辑

asp.net core 系列 8 Razor框架路由(下)
摘要: 三.页面路由操作约定 接着上篇讲asp.net core 系列 7 Razor框架路由。在上篇继续第三节 "页面路由操作约定" 的最后一小节 AddPageRoute 。 使用 AddPageRoute 配置路由,该路由与指定页面关联, 使用指定的路由生成页面链接。 AddPageRoute 使用 阅读全文

posted @ 2019-01-15 16:47 花阴偷移 阅读(453) | 评论 (0) 编辑

asp.net core 系列 7 Razor框架路由(上)
摘要: 一.概述 在上二篇中,主要是介绍了asp.net core mvc中路由的使用,这篇继续介绍路由在ASP.NET Core Razor中的使用。Razor Pages应该使用默认的传统路由,从应用程序的Pages文件夹中提供命令资源。还可以使用其他约定来自定义 Razor Pages 路由行为。 在阅读全文

posted @ 2019-01-14 11:13 花阴偷移 阅读(569) | 评论 (0) 编辑

asp.net core 系列 6 MVC框架路由(下)
摘要: 一.URL 生成 接着上篇讲MVC的路由,MVC 应用程序可以使用路由的 URL 生成功能,生成指向操作的 URL 链接。 生成 URL 可消除硬编码 URL,使代码更稳定、更易维护。 此部分重点介绍 MVC 提供的 URL 生成功能,并且仅涵盖 URL 生成工作原理的基础知识。 IUrlHelpe阅读全文

posted @ 2019-01-11 10:11 花阴偷移 阅读(571) | 评论 (6) 编辑

asp.net core 系列 5 MVC框架路由(上)
摘要: 一. 概述 介绍asp.net core路由时,我初步想了下,分几篇来说明。 路由的知识点很多,参考了官方文档提取出一些重要的知识点来说。 在ASP.NET Core中是使用路由中间件来匹配传入请求的 URL 并将它们映射到操作(action方法)。路由是在程序启动时进行传统路由或属性路由定义。 路阅读全文

posted @ 2019-01-09 17:25 花阴偷移 阅读(728) | 评论 (4) 编辑

asp.net core 系列 4 注入服务的生存期
摘要: 一.服务的生存期 在容器中每个注册的服务,根据程序应用需求都可以选择合适的服务生存期,ASP.NET Core 服务有三种生存期配置: (1) Transient:暂时生存期,在每次请求时被创建。 这种生存期适合轻量级的,无状态的服务。 (2) Scoped: 作用域生存期,在每次请求被创建一次。 阅读全文

posted @ 2019-01-08 10:47 花阴偷移 阅读(839) | 评论 (2) 编辑

asp.net core 系列 3 依赖注入服务
摘要: 一. 依赖注入概述 在软件设计的通用原则中,SOLID是非常流行的缩略语,它由5个设计原则的首字母构成:单一原则(S)、开放封闭原则(O)、里氏替换原则(L)、接口分离原则(I)、依赖反转原则(D)。本篇介绍依赖反转原则以及在ASP.NET Core中的实现。 直接依赖是指:当一个类需要另一个类协作阅读全文

posted @ 2019-01-06 11:36 花阴偷移 阅读(761) | 评论 (1) 编辑

asp.net core 系列 2 启动Startup类介绍
摘要: 一.Startup类 ASP.NET Core 应用是一个控制台应用,它在其 Program.Main 方法中创建 Web 服务器。其中Main方法是应用的托管入口点,Main 方法调用 WebHost.CreateDefaultBuilder来创建 Web 主机,自动分配了 Kestrel Web阅读全文

posted @ 2019-01-05 13:57 花阴偷移 阅读(1188) | 评论 (0) 编辑

asp.net core 系列 1 概述
摘要: 一. 概述 ASP.NET Core 是一个跨平台的高性能开源框架,可以用来:建置 Web 应用程序和服务、IoT应用和移动后端、在 Windows macOS 和 Linux 上使用喜爱的开发工具、部署到云或本地、NET Core 或 .NET Framework 上运行。 ASP.NET Cor阅读全文