首页 > 其他分享 >从浅入深了解.NET Core MVC 2.x全面教程

从浅入深了解.NET Core MVC 2.x全面教程

时间:2023-08-07 19:03:25浏览次数:52  
标签:Core 缓存 HTML 浅入 MVC Tag 使用 cs 属性

一、基础

1.默认配置

  • 使用Kestrel Web Server
  • ASP.NET Core内置——跨平台
  • IIS集成
  • UseIIS()
  • UseIISIntergration()
  • Log
  • IConfiguration接口


2.IConfiguration配置信息的来源

  • appsettings.json
  • User Serets
  • 环境变量
  • 命令行参数
  • XML...


3.管道

从浅入深了解.NET Core MVC 2.x全面教程_MVC

4.MVC

从浅入深了解.NET Core MVC 2.x全面教程_MVC_02


5.路由Routing

  • Concentional Routing
  • Attribute Routing


6.返回View

  • Razor引擎
  • Controller——>ViewResult——>HTML页面


7.ViewModel

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_03


8.怎么使用Tag Helper

1.在【Views】文件夹中创建一个【Razor 视图导入】文件。

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_04

2.在这个文件中导入TagHelper

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_05

3.然后在视图中使用

从浅入深了解.NET Core MVC 2.x全面教程_MVC_06

9.输入的Model

  • Form
  • 导航到含有Form的View


10.ASP.NET Core MVC-Form

  • <input type="text" name="FirstName">
  • Http Post


11.如何使用EF Core

1.先在【appsettings.json】文件中写上连接字符串,将"xxx"替换成自己对应的数据。

"ConnectionStrings": {
    "DefaultConnction": "Server=xxx;Database=xxx;User Id=xxx;Password=xxx"
  }


2.需要安装这些包。

从浅入深了解.NET Core MVC 2.x全面教程_C#_07

3.写一个【TutorialDbContext.cs】类,该类需要继承自:DbContext

从浅入深了解.NET Core MVC 2.x全面教程_MVC_08

从浅入深了解.NET Core MVC 2.x全面教程_MVC_09

4.在【Startup.cs】文件中注入服务。

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_10


在【ConfigureServices】方法中。

从浅入深了解.NET Core MVC 2.x全面教程_C#_11

5.使用EF Core进行迁移,在【程序包管理控制台】输入2个命令即可。

从浅入深了解.NET Core MVC 2.x全面教程_MVC_12


然后会生成2个文件

从浅入深了解.NET Core MVC 2.x全面教程_MVC_13

可以看到已经生成了这个数据库了

从浅入深了解.NET Core MVC 2.x全面教程_C#_14

12.Partial View

  • 复用View代码
  • @Html.Partial("_PartialViewName",data)
  • 没有自己的Model
  • 可以嵌套


13.View Components的特点

  • 可复用
  • 独立的组件
  • 有独立的逻辑/数据
  • 相当于迷你MVC请求
  • 不依赖于父级View的数据


14.在VS中如何使用NPM安装前端库

  • 新建一个Npm配置文件

从浅入深了解.NET Core MVC 2.x全面教程_MVC_15

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_16

  • 输入需要引入的库,比如我需要引入【Bootstrap】

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_17

  • 可以看到已经安装好了。

从浅入深了解.NET Core MVC 2.x全面教程_C#_18

  • 这是物理文件路径。

从浅入深了解.NET Core MVC 2.x全面教程_MVC_19

  • 让系统伺服这个文件夹。

从浅入深了解.NET Core MVC 2.x全面教程_MVC_20

15.使用前端做数据校验

  • 引入Npm库

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_21

  • 在项目中引入刚刚导入的库

从浅入深了解.NET Core MVC 2.x全面教程_C#_22

  • 然后前端自动起作用了(最好使用CND,速度快)


16.如何在不同的环境引入不用的库

从浅入深了解.NET Core MVC 2.x全面教程_MVC_23

如果CND无法访问,挂了;就加入这个回落机制。

从浅入深了解.NET Core MVC 2.x全面教程_MVC_24

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_25

判断Bootstrap

从浅入深了解.NET Core MVC 2.x全面教程_MVC_26

17.ASP.NET Core Identity

  • 身份验证和授权系统
  • 成员管理
  • 默认使用MS SQL
  • 支持外部的Provider


18.如果有多个DbContext,需要指定某一个。

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_27

19.Claim

  • 一部分信息
  • Name-Value
  • 可以来自内部或外部
  • 基于策略的(Policy)


20.Prolicy策略

  • 注册policy
  • 使用policy进行授权


21.Policy内置的方式

  • RequireAuthticatedUser:必须登录用户
  • RequireClaim:要求特定的Claim和值
  • RequireRole:要求特定的角色
  • RequireUserName:要求特定的用户名


22.Policy自定义

  • ReuireAssertion
  • AddRequirements
  • IAuthorizationRequirement
  • AuthorizationHandler<TIAuthorizationRequirement-实现IAuthorizationRequirement接口>
  • 如果一个Handler返回了Succeed,而其他的都没有返回Fail,那么这个Requirement就被满足了。
  • ...
  • AuthorizationHandler<TIAuthorizationRequirement-实现IAuthorizationRequirement接口>    


23.XSS

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

从浅入深了解.NET Core MVC 2.x全面教程_C#_28

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_29

24.不被信任的数据

  • HTML input
  • HTTP Headers
  • Query strings
  • Attributes,EXIF 信息


25.怎么防止XSS?

  • HTML Encoding:>变成$gt; <变成 &lt;
  • Razor默认开启了HTML Encoding,但是可以手动关闭
  • 正则表达式
  • 反XSS的第三方库
  • 对请求进行验证


26.内置的编码器

  • HtmlEncoder
  • JavaScriptEncoder
  • UrlEncode


27.CSRF(跨站请求伪造)

从浅入深了解.NET Core MVC 2.x全面教程_C#_30

28.OWASP的CSRF防范方案

  • Header验证:请求头
  • Synchronizer Token Pattern :用户每次请求时携带Token
  • Double Submit Cookie:双重Cookie


29.ASP.NET Core

  • [ValidateAntiForgeryToken]:针对一个Action
  • [AutoValidateAntiForgeryToken]:针对所有的Post
  • [IgnoreAntiForGeryToken]:取消


30.Model Binding

  • Model Binding允许我们用HTPP请求里的数据类创建C#对象,这个对象就是Action方法的参数。
  • 可以使用一下类型用来Model Binding:
  • int,string等简单数据类型
  • 复杂类型对象
  • 数组


31.Model Binder可以绑定哪些值?

  • Form的值(Body中的POST请求)                
  • 路由的值                                                       
  • QueryString的值(URL地址后的参数)       


32.Binding Attributes

  • Bind:有选择行的绑定属性
  • BindNver:可以放在Model对象一个属性上,表示不应该进行绑定
  • BindRequired:必须进行绑定,在验证的过程中不绑定就报错误


33.例子

1.在【ViewModel】中有一个嵌套属性。

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_31


2.在【View】视图中世界嵌套属性.属性。

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_32

3.在【Controller】中。

从浅入深了解.NET Core MVC 2.x全面教程_C#_33


有选择的绑定属性,这个特性一般放在【Acion方法中】

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_34

[BindNever]放在ViewModel中。

从浅入深了解.NET Core MVC 2.x全面教程_C#_35

34.指定Binding的来源,这是特性

  • [FromBody]:RequestBodys——请求的Body
  • [FromQuery]——QueryStrings
  • [FromHeader]:Request Headers——请求头找属性
  • [FromRoute]——路由
  • [FromForm]——表单的值


35.自定义验证Attribute?

1.新建一个类,这个类需要继承【Attribute】,需要实现【IModelValidator】接口。



36.远程调用-特性

  • [Remote]-客户算调用Action方法进行验证。

【在前端直接调用后台方法进行验证。】

ViewModel:

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_36

Controller:

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_37

从浅入深了解.NET Core MVC 2.x全面教程_C#_38

View:

从浅入深了解.NET Core MVC 2.x全面教程_C#_39

37.Tag Helpers

  • Tag Helpers是服务器中的C#代码,他在Razor文件里,他会参与到创建和渲染HTML元素过程。
  • 和HTML Htlpers类似。
  • 跟HTML的命名规范一致。
  • 内置了很多Tag Helpers,也可以自定义。


38.JavaScript Tag Helpers

  • asp-src-include:导入文件,如:javascript
  • asp-src-exclude:将不想加入的文件加入
  • asp-fallback-src:回落机制(调用不到了[asp-src-include]文件然后就调用这个中的)
  • asp-fallvack-test:具体的

从浅入深了解.NET Core MVC 2.x全面教程_C#_40

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_41


39.CSS Tag Helpers

从浅入深了解.NET Core MVC 2.x全面教程_MVC_42

40.其他的Tag Helpers

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_43

41.环境相关的Tag Helpers

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_44

42.自定义的TagHelpers

1.继承Tag Helpers父类,实现(Override) Process这个方法。

从浅入深了解.NET Core MVC 2.x全面教程_MVC_45

2.注册Tag Helpers

从浅入深了解.NET Core MVC 2.x全面教程_C#_46


3.视图中

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_47

4.最后生成

从浅入深了解.NET Core MVC 2.x全面教程_MVC_48


5.1如果我想添加一个属性,以“-”分割大小写

从浅入深了解.NET Core MVC 2.x全面教程_MVC_49

5.2在这个类中添加一个属性

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_50

6.1如何直接使用下面这种方法实现上面的内容?

从浅入深了解.NET Core MVC 2.x全面教程_MVC_51

6.2使用【异步】的方式

从浅入深了解.NET Core MVC 2.x全面教程_C#_52

7.1如果想添加一个既做为【属性】又作为【元素】的TagHelpers?

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_53

7.2代码

指定目标元素,"或"的关系,只要符合其中一种即可。

从浅入深了解.NET Core MVC 2.x全面教程_C#_54

从浅入深了解.NET Core MVC 2.x全面教程_MVC_55

8.1如果我想添加一个颜色?

从浅入深了解.NET Core MVC 2.x全面教程_MVC_56

8.2添加一个属性,名称可以不一致,添加一个特性即可。

从浅入深了解.NET Core MVC 2.x全面教程_C#_57

9.1如果改成类?

从浅入深了解.NET Core MVC 2.x全面教程_C#_58

从浅入深了解.NET Core MVC 2.x全面教程_C#_59

9.2设置属性、设置Attribute。

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_60


43.Tag Helper前缀

加上前缀就起作用了,不加上就不起作用。

从浅入深了解.NET Core MVC 2.x全面教程_C#_61


44.View Component

  • 显示部门内容
  • Mini Controller
  • 可复用
  • 只能配合父级Virew使用。


45.View Component分成两步

  • 首先需要继承ViewComponent父类
  • 实现Invoke()方法
  • 也可以是异步的:InvokeAsync()
  • 返回IViewComponentResult


二、Logging

1.诊断中间件

  • 命名空间:Microsoft.AspNetCore.Diagnostics
  • 报告信息并处理异常


2.诊断中间件

  • UseDeveloperExceptionPage:开发时使用的异常页面,异常信息
  • UseStatusCodePages:返回状态码:400-600
  • UserExceptionHandler:指定异常处理器
  • UseWelcome:当网站还在建设中


3.ASP.NET Core里的Log系统

  • EventSource
  • ILogger
  • DiagnosticSource


4.ILogger

  • 基于Providers
  • 内置
  • 可扩展使用其他的,或自己构件


5.内置的Log Providers

  • Console:控制台
  • Debug:VSDebug窗口
  • EventSource
  • EventLog:写到Windows事件中
  • TraceSource:只能应用于完整的.NET Frameword
  • Azure App Service


6.Log等级(低级——>高级)

  • Trace
  • Debug
  • Information
  • Warning
  • Error
  • Cirtical


7.添加日志信息

第一个参数是EventID,写一个常量就行;

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_62


第二个参数是要记录的日志信息;如果有2个参数就继续往后写就行了;

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_63


不建议这么写,写在一起就提出不来了;

从浅入深了解.NET Core MVC 2.x全面教程_MVC_64


8.第三方 Log Provider

  • Serilog
  • Nlog
  • Elmah


9.怎么在ASP.NET Core中使用Serilog?

  • 在NuGet中安装【Servilog.AspNetCore】

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_65

如果需要输出到控制台

从浅入深了解.NET Core MVC 2.x全面教程_MVC_66

输出到文件

从浅入深了解.NET Core MVC 2.x全面教程_C#_67

  • 在【Program.cs】文件中Main方法中进行配置。

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_68

  • 在【Program.cs】文件中CreateWebHostBuilder方法中进行使用。

从浅入深了解.NET Core MVC 2.x全面教程_MVC_69


三、Filter

1.Filter

  • 用于MVC
  • 可以在MVC的请求管道里添加逻辑
  • 之前、之后
  • Cross-cutting concerns:灌穿特性
  • 避免代码重复
  • 常用场景
  • 授权
  • 需要Https


2.MVC管道

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_70

3.Filter种类

  • AuthorizationFilter:鉴权授权
  • ResourceFilter:资源过滤器
  • ActionFilter:行为方法过滤器
  • ExceptionFilter:异常过滤器
  • ResultFilter:结果过滤器


4.实现Filter

  • IFilterMetadata
  • IAtuorizationFilter,IAsyncAuthorizationFilter
  • IResourceFilter
  • IActionFilter
  • IRestleFilter
  • IExceptionFilter


5.应用Filter

  • Action
  • Controller
  • 全局

从浅入深了解.NET Core MVC 2.x全面教程_MVC_71


四、缓存

1.缓存的优点?

  • 提高网站的访问速度
  • 适用于不易改变的数据


2.缓存的缺点?

  • 仔细规划
  • 奇怪的副作用


3.缓存的地点?

  • 服务器
  • 缓存服务器
  • 客户端


4.In-Memory缓存

  • 内存缓存
  • IMemoryCache
  • 适用于Sticky Seesion(使用单机服务)
  • 适用于任何类型的对象


5.MemoryCacheEntryOptions

  • Absolute expiration time:绝对过期时间
  • Sliding expiration time:可调的过期时间
  • 缓存优先级
  • PostEvictionDelegate


6.怎么使用缓存?

  • 现在【Sartup.cs】的【ConfigureServices】方法中注册缓存:

从浅入深了解.NET Core MVC 2.x全面教程_MVC_72

  • 定义一个常量,用来做Key

从浅入深了解.NET Core MVC 2.x全面教程_C#_73

  • 构造函数依赖注入缓存

从浅入深了解.NET Core MVC 2.x全面教程_MVC_74

  • 使用缓存

从浅入深了解.NET Core MVC 2.x全面教程_C#_75


7.Cache Tag Helper

  • <cache>@await Component.IncokeAsync("xxx")</cache>
  • 服务器端
  • 使用IMemoryCache
  • Sticky Session


8.Cache Tag Helper属性

  • Enabled:是否启用
  • expires-on:绝对的过期时间
  • expires-after:时间长度
  • expires-sliding:可调的过期时间
  • vary-by-header:请求
  • vary-by-query
  • vary-by-cookie
  • vary-by-user
  • vary-by
  • priority:优先级设置


9.分布式缓存_1

从浅入深了解.NET Core MVC 2.x全面教程_MVC_76


10.分布式缓存_2

  • 无需Sticky Seesion
  • 可扩展
  • 服务器重启不会缓存
  • 性能更好


11.分布式缓存的接口名、方法?

  • IDistributedCache
  • Get,GetAsync
  • Set,SetAsync
  • Refresh,RefreshAsync
  • Remove,RemoveAsync


12.分布式缓存有哪几种?

  • 分布式Memory Cache:只适合开发时应用
  • 分布式 Sql Server Cache
  • 分布式 Redis Cache:实际中使用这个最多


13.怎么使用Readis分布式缓存?

  • 安装Redis(使用Docker安装)

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_77

从浅入深了解.NET Core MVC 2.x全面教程_C#_78

连接、运行Redis

从浅入深了解.NET Core MVC 2.x全面教程_C#_79

  • 在VS项目中安装Redis

从浅入深了解.NET Core MVC 2.x全面教程_MVC_80

  • 在【Startup.cs】的【ConfigureService】方法中进行注入。

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_81

  • 在Controller中构造函数依赖注入

从浅入深了解.NET Core MVC 2.x全面教程_C#_82

  • 使用分布式缓存

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_83


14.Response缓存(响应缓存、客户端缓存)

  • 基于Header
  • 客户端缓存
  • 使用ResponseCache这个Attribute


15.Reponse缓存参数?

  • Location:设置缓存在哪
  • Duration:设置缓存时间的长短
  • NoStore:不应该设为缓存
  • VaryByHeader:设置通过检查哪个Header的值决定缓存


16.如何使用Reponse缓存?

  • 在【Startup.cs】注册Reponse缓存

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_84

  • 在控制器中写代码;

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_85

也可以使用之前注册的

从浅入深了解.NET Core MVC 2.x全面教程_MVC_86


17.压缩

  • 压缩传输的数据:1k以上的数据,如CSS、JS等可以进行压缩;

如何使用呢?

(1)在【Program.cs】中【ConfigureServices】方法中注册服务

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_87

(2)在【Program.cs】中【Configure】使用服务

从浅入深了解.NET Core MVC 2.x全面教程_ASP.NET_88

五、VSTS(后改名:Azure DevOps)

1.Azure DevOps

  • Saas
  • 完整的DevOps的解决方案
  • 与技术无关
  • 基于Azure
  • 集成开发团队的环境


2.Azure DevOps组件

  • 源码控制
  • 计划
  • CI
  • 发布管理
  • 测试
  • ...


3.CI-Continuouts Integeration(持续集成)

4.Azure Devops -CI

  • Build连接到测试,工作项...
  • 宿主代理
  • 针对报告
  • 支持多种语言凭他


原文链接:https://blog.51cto.com/kimiliucn/6996292

标签:Core,缓存,HTML,浅入,MVC,Tag,使用,cs,属性
From: https://blog.51cto.com/kimiliucn/6996292

相关文章

  • 授权过滤器—MVC中使用授权过滤器实现JWT权限认证
    一、什么是过滤器?过滤器定义:​过滤器与中间件很相似,过滤器(Filters)可在管道(pipeline)特定阶段(particularstage)前或后执行操作,可以将过滤器视为拦截器(interceptors)。在.NETMVC开发中,权限验证是非常重要的一部分。通过使用授权过滤器可以很方便地实现权限验证功能。这篇主要分......
  • How to get User Name from External Login in ASP.NET Core?
    HowtogetUserNamefromExternalLogininASP.NETCore? 回答1DoyouhaveaccesstoSignInManagerorcanyouinjectit?Ifyes,thenthisishowyouwouldaccessuserid(username),email,first&lastname:publicclassMyController:Microsoft.Asp......
  • Coreference Resolution 对于OntoNotes 5.0数据集的预处理操作
    1.下载数据集1.1下载Conll-2012相关数据集和脚本1.2下载OntoNotes......
  • kubernetes-发布netcore项目
    一,安装k8s环境 参考:https://www.yuque.com/fairy-era/yg511q/lmy7gc二,通过Dockerfile文件将本地项目打包成镜像。发送到本地仓库或者阿里云(https://promotion.aliyun.com/ntms/act/kubernetes.html),方便在node机器上拉取镜像,不然每个node机器都要重新制作镜像。三,在k8s的ma......
  • .NET Core框架、库和软件的中文收录大全
    .NETCore框架、库和软件的中文收录大全。内容包括:库、工具、框架、模板引擎、身份认证、数据库、ORM框架、图片处理、文本处理、机器学习、日志、代码分析、教程等。这里记录的大部分可以链接到github上,Nuget上也有对应的包,这里只记录比较牛的项目。目录微软ORMIOC日志......
  • 从浅入深了解.NET Core MVC 2.x全面教程
    一、基础1.默认配置使用KestrelWebServerASP.NETCore内置——跨平台IIS集成UseIIS()UseIISIntergration()LogIConfiguration接口2.IConfiguration配置信息的来源appsettings.jsonUserSerets环境变量命令行参数XML...3.管道4.MVC5.路由Routin......
  • k8s 部分节点 nodelocaldns [ERROR] Failed to read node-cache coreFile /etc/coredn
      部分K8S节点nodelocaldnsCrashLoopBackOff状态报错,报错信息如下:#kubectllogsnodelocaldns-w9mgz-nkube-system2023/08/0703:18:33[INFO]UsingCorefile/etc/coredns/Corefile2023/08/0703:18:33[ERROR]Failedtoreadnode-cachecoreFile/etc/coredns/Co......
  • 【HMS Core】推送报错907135701、分析数据查看
    ​【关键字】HMS、推送服务、分析服务 【问题描述1】集成推送服务,获取Token时报错907135701:scopelistempty 【解决方案】907135701OpenGW没有配置Scope1、您可以检查下网络是否有问题,手机是否可以正常连接互联网2、查看推送服务开关是否正常打开​​ 【问题......
  • linux(centos版本)下docker部署.netcore项目
    准备:1.要在Linux系统上使用Docker部署系统,你需要安装Docker引擎以及一些其他相关的软件。以下是安装步骤:安装Docker引擎:对于Ubuntu系统,可以使用以下命令安装Docker:sudoapt-getupdatesudoapt-getinstalldocker-cedocker-ce-clicontainerd.......
  • c#MVC使用AutoFac实现IoC容器,接口多个实现的注入
    AutoFac能够实现自动注入   NetCore同接口多个实现依赖注入  相关资料AutoFac下载的引入使用nuget包管理引入AutoFac 添加打勾的3个,AutoFac容器,AutoFac的apiController支持,AutoFac的mvc支持在Global.asax中注册AutoFacprotectedvoidApplication_Start()......