ASP.NET Core MVC学习笔记
2020-04-01 10:46:31 0 举报
AI智能生成
ASP.NET Core MVC学习笔记
作者其他创作
大纲/内容
ASP.NET Core MVC基础知识
建立项目
Visual Studio 2019
dotnet CLI
项目结构和配置简介
Host默认配置
使用Kestrel Web Server(ASP.NET Core内置,跨平台)
IIS集成
UseIIS(),UseIISIntegration()
Log
IConfiguration接口
Startup配置(配置WEB启动逻辑)
ConfigureServices
Configures
http处理请求管道,每当一个http请求到达之后,Configure里面的组件将决定我们来如何响应这个http请求
服务注册与管道
中间件
Controller
Controller的路由
Conventional Routing
Attribute Routing
Controller父类
提供很多上下文的信息和封装的方法
Controller Action的返回结果
返回IActionResult
内容
文件
页面
Model
Entity Model
View Model
View
Model
输入Model
防止重复提交
post-redirect-get
Model验证
DATA ANNOTAIONS
[Required]:必填项
[StringLength(50)]
[DataType(DataType.Date)]
[Range(0,999.99)]
[Url]
[RegularExpression]
[Compare]
[Phone]
自定义验证ATTRIBUTE
Attribute,IModeIValidator
远程验证
[Remote]
客户端调用Action进行验证
Tag Helpers
_ViewImports.cshtml
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Tag Helpers是服务端的C#代码,它在Razor文件里,它会参与到创建与渲染HTML元素过程
和HTML Helpers类似
跟HTML的命名规范一致
内置了很多Tag Helpers,也可以自定义
JAVASCRIPT TAGHELPERS
asp-src-include
<script asp-src-include=“~/app/**/*.js” asp-src-exclude=“~/app/services/**/*.js”/>
asp-src-exclude
asp-fallback-src
<script src=“//ajax.aspnetcdn.com/ajax/bootstrap/3.0.0/bootstrap.min.js” asp-fallback-src=“~lib/bootstrap/js/bootstrap.min.js” asp-fallback-test=“window.jQuery”>
asp-fallback-test
CSS TAG TAGHELPERS
asp-fallback-href
asp-fallback-test-class
asp-fallback-test-property
asp-fallback-test-value
示例:<link rel=“stylesheet” href=“//ajax.aspnetcdn.com/ajax/bootstrap/3.0.0/css/bootstrap.min.css” asp-fallback-href=“~/lib/bootstrap/css/bootstrap.min.css” asp-fallback-test-class=“hidden” asp-fallback-test-property=“visibility” asp-fallback-test-value=“hidden”>
其他TAG HELPERS
asp-append-version
<img src=“~/images/asplogo.png” asp-append-version=“true”/>
<img src=“/images/asplogo.png?v=Kl_dqr92ji2u3o4uiuou2iou34o234o234iu234”/>
环境的TAG HELPERS
<environment names=“Staging,Production”>
<strong>HostingEnvironment.EnvironmentName is Staging or Production</strong>
</environment>
<environment names=“Development”>
<strong>HostingEnvironment.EnvironmentName is not Development</strong>
</environment>
<strong>HostingEnvironment.EnvironmentName is Staging or Production</strong>
</environment>
<environment names=“Development”>
<strong>HostingEnvironment.EnvironmentName is not Development</strong>
</environment>
自定义的TAG HELPERS
集成TagHelper父类,实现(override)Process方法
TAG HELPERS前缀
@tagHelperPrefix
Razor
_Layout.cshtml
_ViewStart.cshtml
如果存在这个文件首先会执行这个文件里面的代码
_ViewImports.cshtml
Partial View
复用View代码
@Html.PartialView("_PartialViewName",data)
没有自己的Model
partail Tag Helper
可以嵌套
View Components
可复用
独立的组件
有独立的逻辑/数据
相当于迷你的mvc请求
不依赖于父级View的数据
调用示例
@await Component.InvokeAsync("Welcome")
<vc:Welcome-Students></vc:Welcome-Students>
显示部分内容
MiniController
只能配合父级View使用
继承ViewComponent父类
实现Invoke()方法
返回IViewComponentResult
InvokeAsync()
Model Binding
作用
允许我们用HTTP请求里面的数据来创建c#对象,这个对象就是Action方法的参数
支持的以下类型
Int,string等简单类型
复杂类型对象
数组
Model Binder
Form的值
路由的值
QueryString的值
BINGING ATTRIBUTES
Bind
BindNerver
BindRequired
指定绑定来源
FromBody:Request Bodys
FromQueryString:QueryStrings
FromHeader:Request Headers
FromRoute
FromForm
少许前端
Entity Framework
迁移
简介:包括数据库的创建与更新,这些动作叫作数据库迁移,这些动作需要运行一些命令
运行命令的方式
Package Manage Console
dotnet cli
迁移命令
Add-Migration Xxxx
重新开始,数据库还没有的时候,执行后efcore会检测存不存在,会生成一个快照类和迁移类,每次迁移会生成迁移类,迁移类里面的代码就是生成数据库的代码或者更新数据库的代码
Xxxx表示迁移描述,例如:InitialDB
Update-Database
使用迁移生成的代码,把这些代码转化为SQL语句,执行到目标数据库
Verbose参数,例如:Update-Database -Verbose:查看执行的明细过程
身份认证和授权
ASP.NET Core Identity
用户管理
USER MANAGER
角色管理
ROLE MANAGER
Role Manager
创建、删除角色
将用户添加到Role
对Role进行授权[Authorize(Roles=“xxxRole”)]
默认使用MSSQL
支持外部Provider
使用ASP.NET CORE IDENTITY
登陆和注册的View
Account Controller
Model
ASP.NET CORE IDENTITY重点类
UserManager<IdentityUser>
SignInManager<IdentityUser>
基于CLAIM的授权
CLAIM
一部分信息
Name-Value
可以来自内部或外部
基于策略的(Policy)
POLICY策略
注册policy
使用policy进行授权
POLICY内置的方式
RequiredAuthenticatedUser
RequireClaim
RequireRole
RequireUserName
POLICY自定义
RequireAssertion
AddRequirements
IAuthorizationRequirement
AuthorizationHandler<TIAuthorizationRequirement>
XSS & CSRF
Filter
简介
用于MVC
可以在MVC的请求管道里添加逻辑(之前、之后)
避免代码重复
常用场景(授权,页面请求信息统计)
种类
授权
资源
Action
异常
Result
实现FILTER(FilterMetadat)
IAuthorizationFilter,IAsyncAuthorizationFilter
IResourceFilter
IActionFilter
IExceptionFilter
IResultFilter
缓存
优点
提高网站访问速度
适用于不易改变的数据
缺点
仔细规划
奇怪的副作用
缓存的地点
应用服务器
分布式服务器
可扩展
服务器重启不会影响缓存
性能更好
客户端
类型
IN-MEMORY缓存
IMemoryCache
redis缓存
Microsoft.Extenstion.Cache.Redis
IDistributedCache
RESPONSE缓存
基于Header
客户端缓存
使用ResponseCache这个Attribute
参数
Location
Duraction
NoStore
VaryByHeader
CACHE TAG HELPER
0 条评论
下一页