ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道 语雀: https://www.yuque.com/yuejiangliu/dotnet/olbl88 视频地址:https://www.bilibili.com/video/av38392956/?p=3 自定义接口对象获取信息 现在不想从配置源里面获取信息,自己写一个服务,首先弄一个接口叫做IWelcomeService 假设接口有这么一个方法getMessage() 那么无论是哪个…
在MVC的请求管道 并不是  asp.net core的请求管道.所以说Filter是专用于MVC的 贯穿特性,横穿关注点.比如授权.日志 这里的Authorize其实就是一个Filter,主要用来授权的 比如这个Filter,我们要求必须使用Https才可以访问 授权在整个管道的最前面 action过滤器是在Action被调用之前和之后,这个时候ModelBing已经发生了.绑定完之后就可以操纵这些参数了. Rsult:在Action的IActionResult之前和之后,通过它可以控制结果的…
视频地址: https://www.bilibili.com/video/av38392956/?p=2 语雀 https://www.yuque.com/yuejiangliu/dotnet/ixtbmb ASP.NET Core MVC 02. Web Host 的默认配置 再来看下:CreateWebHostBuilder这个方法 它使用了 WebHost的静态方法CreateDefaultBuilder,它会返回一个类型叫做IWebHostBuilder,IWebHostBuilder它…
ASP.NET Core MVC 13. 安装前端库 Partial VIew 就是部分View,他没有自己的数据,数据来自图中白色的那块,它的数据需要传进去,第一个参数是View的名称,第二个参数就是传入的数据,它没有自己对应的后台逻辑和数据 Home/Index.cshtml想把这个列表改成复用的,改成一个Partical View 起名通常是以下划线开始的 先把引入Partial的代码写上 Partial VIew的代码就是这个样,最上面声明类型 原来的代码注释掉 这里有个提示建议使用其他…
注册startup类可以配置我们web应用的启动逻辑,使用的就是UseStartUp方法,asp.net core就会实例化这个类 并调用startup类里面的两个方法ConfigureServices和Configure ConfigureServices方法里是注册服务,注入这些服务后就可以注入到其他的方法或者类里面进行使用,这些注册的服务包括我们自己的写这些服务,也包含.net core预定义好的一些服务 也包含.net core预定义好的一些服务,有一些默认也是没有注册的,需要我们在这里…
前端库使用npm进行安装,需要先建立webpack.json文件 因为我们没有使用npm安装任何库,所以npm的文件夹是空的 这里是用于开发时构建时引用的库写在这里 这里用到bootStrap 开发时和发布时都要用的所以要放到这里 自己写上,BootStrap的版本号是自己去官网看的 点击保存后npm 就会自动在左下角进行安装了 会依赖的库都安装好了 存放包的模块司机是跟目录的node_modules文件夹下.VS会把这个文件夹排除,因为是不需要加入到源码库的 bootStrap安装到这里,怎么…
VSTS做持续集成 后来改名叫做Azure Deveps https://azure.microsoft.com/zh-cn/services/devops/ 这是中文的地址 创建一个项目 名称.描述.私有的项目 然后点击创建.对个人用户完全免费,个人团队不超过5个人都可以使用 相当于项目的首页 源码放在这里 复制git的地址 git init 然后把复制的两句话粘贴进去 这样源码 就上传上来了. 项目工行迁进来 看不出来啥效果.看一个已经存在的项目 找到一个文件之后,就可以看到文件的代码 修改…
新建项目:Tutotial.Web 解决方案名称可以把web去掉 视频里面把git这个选项勾选了.我就不勾选了 dotnet CLI创建项目 首先必须安装好了.net Core的SDK dotnet --info dotnet --help 使用dotnet new命令来创建项目 mkdir FormCli创建文件夹FromCli 执行dotnet new 这是一些模板 我们使用这个空模板 使用VSCode打开当前目录 包含项目,不包含解决方案 运行这个项目 5000和5001两个端口,分别是h…
视频地址: https://www.bilibili.com/video/av38392956/?p=5 这里面就包含了MVC相关的库 可以通过打开右侧的Nuget库进行查看 这里修改下 ,只需要静态文件就可以了 加入mvc的中间件,先使用USeMvcWithDefaultRoute()这里面加了一些默认路由的配置 直接运行页面,提示报错,无法找到所需的服务 注册下mvc的服务 这样就能运行起来.mvc的服务不是手动添加好的,需要自己添加一下 新建Controllers文件夹,然后在下面新建Co…
Controller父类会提供很多上下文的相关信息,还提供了很多封装的方法 返回的对象要求实现了IActionResult接口 继承父类,并引入命名空间 写this点就出现很多东西,这些就是上下文的信息. 这就获取了Controller的名字 action的name 还有一个我们熟悉的对象HttpContext对象 可以看request的Body或者Header等等的一些信息 也可以操作ResponseWrite,但是不建议这么做 不建议在Controller里面直接访问HttpContext对…
student添加一个属性BirthDate 然后把生成数据的地方,字段也加上 建立ViewModel list转换为ViewModel 进一步改进代码 StudentViewModel HomeIndexViewModel修改为只有StudentModel一个集合的属性 HomeIndexViewModel相当于是一个用于输出的Model 详情页 查询详情,一般是根据一个主键去查找.这里我们先直接把这个id返回去 mvc会从多个地方找id这个参数去接受.首先会先从路由里面找id这个参数 测试下…
支持的数据库:可以查看官方网站 https://docs.microsoft.com/en-us/ef/core/providers/ 安装了VS2017后会安装了LocalDB,验证localDB 在CMD输入:sqllocaldb 现实当前存在的实例 sqllocaldb info 使用VS也可以查看 appsettings.json配置数据库链接字符串 把localDB的链接字符串复制到这里 需要有一个类继承DBContext这个类,有一些属性DbSet,每一个DbSet和数据中的一个表对…
源码的github的地址 https://github.com/solenovex/ASP.NET-Core-MVC-Tutorial-Code 语雀上的人的地址: https://github.com/Wonderdch/ASP.NET-Core-MVC-Tutorial-Code 第十五节课的的目录 用户的列表管理 新建UserController 登陆用户才能访问这个Controller下面的所有 注入UserManager 返回类型是Iqueryable需要对他进行ToList操作 改成…
常用的诊断中间件: UseDeveloperExceptionPage UseStatusCodePages:返回 400~600 的状态码 UseExceptionHandler 自定义异常的处理器 UseWelcomePage:欢迎页,网站还在开发时可以启用该中间件 UseDatabaseErrorPage UseWelcomePage 放在管道的最前面 网站启动之后 无论我输入任何的地址 都会到这个页面.因为他放在管道的最前面了 开发模式下显示异常的页面 这个中间件显示400到600之间的…
In-Memory 使用IMemeryCache接口 注册缓存 HomeController注入进来 建一个类,用来存缓存的常量 判断缓存里面是否有数据,如果没有就读数据库存起来. 设置缓存事件,可调的 30秒.如果缓存的值被访问了就延长30秒 绝对过期,600秒 缓存被清空之后,调用回调方法,再填充回去 Cache Tag Helper 属性: enabled:是否启用 expires-on:绝对过期时间 expires-after: expires-sliding vary-by-heade…
通过action的参数传入一个model 通过input的name属性和model属性对应上 通常是使用Http post去做 快速创建了这个Action 这个Action很简单我们只需要返回View就可以了 在Home下创建Create.cshtml Create页面 先声明小写的model的数据类型 Action可以不用写,因为提交数据就是提交的本页面 文本框的name值和model的属性值一一对应的关系 TabHelper的写法,上面已经声明了model的类型,这里的asp-for就是fo…
数据注解 这样前后就会有div把这个inoput给包起来 添加一个Label使用TagHelper也有只能提示 出现的效果是这样的,实际上是把model的属性名打印出来.了. 把其他几个label也添加上 显示中文名字 运行页面查看效果 首先会寻找Display的name值,如果没有就显示属性名称 把这个FirstName设置了一个密码的类型 生成的文本框就编程了密码类型的 修改下传入的model,.刚才写Student是写错了.post请求的时候传入的是ViewModel 验证属性字段错误信息…
通常会使用外层模板的view,当做公共的模块 通常叫做_Layout.cshtml views下新建Shared文件夹 主要关注RenderBody,这里会具体渲染Action返回的内容View layout的title是在这里 ViewBage是个dynamic动态类型.既然是动态类型,我就可以在它身上写一些属性进行动态赋值 在Home/Index.cshtml内加了代码段,如果使用了Layout作为模板的话, 这里加的代码会先渲染.然后到了layout页面.@ViewBag他已经有值了 就会…
默认的身份认证好授权系统 UserManager用来操作用户的类, Singi用来身份认证的 添加AccountController 先声明SignInManager和UserManager这两个服务 快捷键Ctrl+. 两个都需要分别进行Ctrl+.快速的生成 创建登陆的Action Login 建立View 创建LoginViewModel 主要是用户名和密码两个字段 登陆的逻辑 注册的逻辑 退出的逻辑 创建regiser的视图页面 在_Lauout里面添加了注册和登陆的链接 点击注册发现报…
注入UserManager和RoleManager 建立View页面.这段视频中没有录. RoleManager的服务没有注册 注册的地方进行修改 再次运行就可以了 这个ViewModel实际上只需要角色的名称就可以了 添加失败就循环错误Model级别的错误 这块代码也没有录制 测试结果 编辑角色 可以给这个角色里面添加一些用户 建立EditRole.cshtml 具体代码没录 这块代码也没录 删除角色也没录 运行效果 还需要实现往 橘色里面添加用户和角色里面把用户移除 在这个页面做角色用户的列…
首先补一下昨天没有讲的东西 只有管理员才能访问UserController RoleController都加上这个角色 Cliam 不是管理员角色的用户访问 cliam是name个Value值的键值对.cliam有类型 管留言也无法访问编辑专辑的页面.因为用户没有包含这个Cliam 做一套可以维护用户Cliam的页面 在用户编辑页面,显示用户的Cliam 维护cliam页面 需要在VIewModel里面加个Cliam属性 需要把用户的数据返回去,所以还需要一个ViewModel. 需要一个用户i…
在加一个策略,要求cliam的值必须是123 第二个参数的类型 可变参数 ,可以是这三种类型 变成一个集合也可以 策略内置的几种方式 自定义 RequireAssetion的参数是个Func,Func可以理解为一个匿名方法,匿名方法有个参数叫做Conext,全名叫做 全名叫做AuthorizationHanlderContext p判断当前用户是否有个Edit Albums的cliam.如果有就返回true 上面和下面道具是一样的 下面的可以自定义写一个代码进行更复杂的裸机判断 可变参数,手写一…
模型绑定 这是个最简单的绑定 先从表单找.再从路由的值上找,最后去QueryString上找 通过反射获取这个类型的属性进行填充.反射完有几个属性,就开始去找着几个属性并绑定值 复杂类型 最后又加了一个属性,这个属性是另外一个对象 View页面,只要前端也有这个对象的字属性就可以了. 使用这些Attributes可以改变或者影响绑定 Bind:选择性的绑定 BindNever:可以放到model属性上.表示不应该被绑定 BindRequired:必须有绑定 测试: 前台加了Role.RoleNa…
深入的将Model验证 手动添加验证的错误 view里面显示每个属性的验证错误信息 显示整个model级别错误 自定义验证 如果业务逻辑需要比较复杂的验证.而且这个验证逻辑可能到处复用的话就应该考虑使用自定义的Attribute 因为DataType使用的类型是Url 把原来的默认的自带的验证url的属性去掉,自己写一个验证url的 新建文件夹.并新建类 首先需要一个属性放错误信息 context是model验证的上下文 然后验证url.Context.model就是我们要验证的属性 我们 知道…
深入的讲Tag Helpers 加载app下面的所有的文件夹以及各自文件夹下面所有的js文件. exclude是排除掉Services文件夹和其下面的子文件夹 使用cdn加载远程的js文件 找hidden这个class来判断css是否加载成功了. hidden里面是否有property visiblity property对应的值应该是hidden 这里的include指的是wwwroot下面所有的js文件 css测试,故意前面加了12323这些字符串,这样就造成了 远程cdn地址是错误的. c…
当条件为true就渲染,否则就不渲染 ‘ 判断用户的登陆 更好的一点是做一个TagHelper.把这些明显的C#代码都去掉.最终都是用html和属性的形式来组成一个最终的代码 属性名称等于Confition这个属性的.是用nameof有利于重构 改成布尔类型了. 登陆之后的效果 前缀 tagHelper属性的名字有可能和html的属性名相同了,. 启用前缀后,属性的关键字都不再高亮显示了 再把前缀删掉.就有是加粗的高亮字体了 凡是加上前缀的都起作用了. View Component 如果用在Ho…
存库之前先净化,净化之后再提交到数据库 刚才插入的那笔数据 把默认的Razor引擎默认的EnCode去掉.Razor默认会开启htmlEnCodding 数据恢复回来 插入数据库之前对插入的数据进行净化,或者叫做给它编码 原来的数据删掉,新加一条数据 想显示为正常的html 的话就用Html.Raw CSEF 同步令牌模式 双重提交cookie .net core 就是使用的同步令牌模式 按钮隐藏了表单 模拟提交数据 在此模拟 会生成表单验证的token 隐藏域 全局设置 然后添加一个全局的Fi…
Reshaper快捷键盘 快速生成属性:prop Ctrl+. ASP.NET Core MVC 2.x 全面教程:https://www.bilibili.com/video/av38392956 语雀地址:https://www.yuque.com/yuejiangliu/dotnet/solenovex-core-mvc-comp github代码:https://github.com/solenovex/ASP.NET-Core-MVC-Tutorial-Code 杨旭的博客地址:htt…
Adding  new Item to a list of items, inline is a very nice feature you can provide to your user. This posts shows 2 different ways to do this in ASP.NET MVC3 and how Modelbinding handles that. MVC3 dynamically added form fields model binding We are g…
最近才开始学习ASP.NET Core,发现社区的学习资料很多,但是相关的视频教程不是很多,52ABP官方有两个视频教程,但是ABP框架比较臃肿,初学者学起来有点吃力,所以还是推荐大家先啃书或者官方文档,有点基础知识了再看视频教程学习,个人觉得这样学起来比较好一点.经过一段时间的学习后我找到一些相关的免费视频教程,发现还是不错,推荐给大家,共同学习,共同进步! 一,文档教程汇总: .NET官方在线文档 ASP.NET Core官方中文离线教程 EF Core官方中文离线教程 零度教程(零度网站上…