从浅入深了解.NET Core MVC 2.x全面教程【第一章】

目录

一、基础

1.默认配置

2.IConfiguration配置信息的来源

3.管道

4.MVC

5.路由Routing

6.返回View

7.ViewModel

8.怎么使用Tag Helper

9.输入的Model

10.ASP.NET Core MVC-Form

11.如何使用EF Core

12.Partial View

13.View Components的特点

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

15.使用前端做数据校验

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

17.ASP.NET Core Identity

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

19.Claim

20.Prolicy策略

21.Policy内置的方式

22.Policy自定义

23.XSS

24.不被信任的数据

25.怎么防止XSS?

26.内置的编码器

27.CSRF(跨站请求伪造)

28.OWASP的CSRF防范方案

29.ASP.NET Core

30.Model Binding

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

32.Binding Attributes

33.例子

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

36.远程调用-特性

37.Tag Helpers

38.JavaScript Tag Helpers

39.CSS Tag Helpers

40.其他的Tag Helpers

41.环境相关的Tag Helpers

42.自定义的TagHelpers

43.Tag Helper前缀

44.View Component

45.View Component分成两步

目录

第一章:从浅入深了解.NET Core MVC 2.x全面教程_西瓜程序猿的博客-CSDN博客

第二章:https://blog.csdn.net/2301_79251107/article/details/132186001

一、基础

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

2.IConfiguration配置信息的来源
  • appsettings.json
  • User Serets
  • 环境变量
  • 命令行参数
  • XML...

3.管道

4.MVC

5.路由Routing
  • Concentional Routing
  • Attribute Routing

6.返回View
  • Razor引擎
  • Controller——>ViewResult——>HTML页面

7.ViewModel

8.怎么使用Tag Helper

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

2.在这个文件中导入TagHelper

3.然后在视图中使用

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.需要安装这些包。

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

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

在【ConfigureServices】方法中。

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

然后会生成2个文件

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

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

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

14.在VS中如何使用NPM安装前端库
  • 新建一个Npm配置文件

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

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

  • 这是物理文件路径。

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

15.使用前端做数据校验
  • 引入Npm库

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

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

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

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

判断Bootstrap

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

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

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等各种内容。

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(跨站请求伪造)

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】中有一个嵌套属性。

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

3.在【Controller】中。

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

[BindNever]放在ViewModel中。

34.指定Binding的来源,这是特性
  • [FromBody]:RequestBodys——请求的Body
  • [FromQuery]——QueryStrings
  • [FromHeader]:Request Headers——请求头找属性
  • [FromRoute]——路由
  • [FromForm]——表单的值

35.自定义验证Attribute?

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

36.远程调用-特性
  • [Remote]-客户算调用Action方法进行验证。

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

ViewModel

Controller

View

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:具体的

39.CSS Tag Helpers

40.其他的Tag Helpers

41.环境相关的Tag Helpers

42.自定义的TagHelpers

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

2.注册Tag Helpers

3.视图中

4.最后生成

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

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

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

6.2使用【异步】的方式

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

7.2代码

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

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

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

9.1如果改成类?

9.2设置属性、设置Attribute。

43.Tag Helper前缀

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

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

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

下一篇:https://blog.csdn.net/2301_79251107/article/details/132186001

版权声明:本文为原创文章,版权归 [西瓜程序猿] 所有,转载请注明出处,有任何疑问请私信咨询。

原文链接:https://blog.csdn.net/2301_79251107/article/details/132141827

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值