ASP.NET Core MVC 网站学习笔记
ASP.NET Core MVC 网站学习笔记
最近因为” 新冠” 疫情在家办公,学习了 ASP.NET Core MVC 网站的一些知识,记录如下。
一、新建项目及基本结构
我们要新建的是 “ASP.NET Core Web 应用程序” 类型的项目:

起名之后选择 .NET Core 分类下的 “Web 应用程序 (模型视图控制器)” 模板,也就是 MVC 类型的模板,然后创建即可:

创建后结构如下图:

wwwroot 存放网站的 js、css 等前端文件,Models 存放模型类,Views 存放视图文件,Controllers 存放控制器;
appsettings.json 用于配置,比如可以在其中加入数据库连接字符串:

Programs 是程序入口,实际的启动工作通过 Startup 来进行。
二、实体模型和 EF 框架
我们可以在 Models 文件夹下添加实体类,并给字段添加一些特性:
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations; // 存放实体类 Entity
namespace EasyBlog.Models
{
/// <summary>
/// 用户表
/// </summary>
public class InfoUser
{
[Key] //非ID的主键需要
[StringLength()]
[DisplayName("用户名")] //显示的名称,主要用于前端页面
[Required(ErrorMessage = "酒店名称不能为空")]
public string UserName { get; set; } [StringLength()]
[DisplayName("密码")]
[Required(ErrorMessage = "密码不能为空")]
public string Password { get; set; } [DisplayName("创建日期")]
public DateTime DTCreate { get; set; } [DisplayName("登陆日期")]
public DateTime DTLogin { get; set; } public byte[] HeaderImg { get; set; }
}
}
再添加一个 数据库上下文类,继承 DbContext :
using Microsoft.EntityFrameworkCore; namespace EasyBlog.Models
{
/// <summary>
/// EntityFrameworkCore(实体框架) <span class='wp_keywordlink_affiliate'><a href="http://dlgcy.com/tag/ef/" title="View all posts in EF" target="_blank">EF</a></span>(Code First)
/// </summary>
public class DbWlh : DbContext
{
public DbWlh(DbContextOptions<DbWlh> options) : base(options)
{
} public DbSet<InfoUser> InfoUsers { get; set; }
public DbSet<InfoBlog> InfoBlogs { get; set; }
public DbSet<InfoReply> InfoReplies { get; set; }
public DbSet<InfoLog> InfoLogs { get; set; }
}
}
在 Startup 中的 ConfigureServices 方法中注册数据库上下文,用到了数据库上下文类和数据库连接字符串名称:
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews(); // 注册数据库上下文
// 需要包:Microsoft.EntityFrameworkCore.sqlserver 和 Microsoft.EntityFrameworkCore.Tools
services.AddDbContext<DbWlh>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DbWlh")));
}
现在我们可以打开” 程序包管理器控制台”(在” 工具”—”NuGet 包管理器” 中)了,敲入命令 “add-migration init” 来添加新的数据库” 迁移”,其中”init” 是迁移的名称。

添加的” 迁移” 都保存在 Migrations 目录下:

添加完” 迁移” 之后,就可以使用命令”update-database” 将改动更新到数据库中了。
三、MVC
进行到这一步后,最简单的添加一套 MVC 增删改查功能(准确地说只添加了 VC)的方法就是,在 Controllers 文件夹上右键 —” 添加”—” 控制器”,然后选择 “视图使用 Entity Framework 的 MVC 控制器”:

接下来选择好模型类、数据上下文类,勾上” 生成视图”,点击” 添加” 即可:

这样就不光生成了控制器,还在 Views 文件夹生成了相应的增删改查页面:

当然,你也可以自己在控制器里写方法,然后在”return View ()” 的地方右键 —” 添加视图”,这样来添加视图:

四、身份验证
我们首先还是在 Startup 中的 ConfigureServices 方法中配置使用 Cookie 方式来做身份验证:

代码:
public const string CookieScheme = "Cookies";
// 配置验证;
services.AddAuthentication(CookieScheme)
.AddCookie(CookieScheme, option =>
{
option.LoginPath = new PathString("/account/login"); //登陆的路径
option.AccessDeniedPath = new PathString("/account/denied");
});
在 Configure 方法中启用验证:

代码: app.UseAuthentication(); // 启用验证;
然后在需要验证(登陆)才能用的控制器上标上”[Authorize]” 特性:

这样如果未通过验证就访问,就会跳转到验证页面(在 Startup 中配置过的)。
至于登陆成功的验证信息的保存则使用以下代码:
// 保存验证结果;
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, userName));
var claimsIdentity = new ClaimsIdentity(claims, "Cookies");
await HttpContext.SignInAsync(new ClaimsPrincipal(claimsIdentity));
这样再访问需要验证的页面,就能顺利通过了,而且可以使用”User.Identity.Name” 的形式获取到需要的数据。
好了,暂时就说这么多吧,再见。
首发:http://dlgcy.com/asp-net-core-mvc-learning/
ASP.NET Core MVC 网站学习笔记的更多相关文章
- ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务40:介绍 1.Individual authentication 模板 ...
- ASP.NET Core快速入门--学习笔记系列文章索引目录
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...
- ASP.NET Core Web开发学习笔记-1介绍篇
ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...
- 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移
不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...
- centos7+nginx部署asp.net core mvc网站
1. 安装 .net core 可参见官网安装教程. 选择Linux发行版本为Centos/Oracle 添加dotnet的yum仓库配置 $ sudo rpm -Uvh https://packag ...
- asp.net core MVC 入门学习
前言 .net core 已经更新到2.0以上的版本了,今天才开始正式接触,深为程序员,丢脸了,作为无所不能的IT人,我着手折腾一下这个跨平台的开发框架. (转载自百度百科).NET Core 是.N ...
- ASP.NET Core快速入门学习笔记(第1章:介绍与引入)
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务1:课程介绍 任务2:环境安装 下载地址:https://dotnet.m ...
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...
- ASP.NET Core快速入门学习笔记(第2章:配置管理)
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务9:配置介绍 命令行配置 Json文件配置 从配置文件文本到c#对象实例的 ...
随机推荐
- MySQL:如何查询出每个分组中的 top n 条记录?
问题描述 需求: 查询出每月 order_amount(订单金额) 排行前3的记录. 例如对于2019-02,查询结果中就应该是这3条: 解决方法 MySQL 5.7 和 MySQL 8.0 有不同的 ...
- MySQL数据库之xtrabackup物理备份(一)
前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备 ...
- 「 扫盲 」Web服务器和应用服务器的区别
我们经常使用apache,tomcat,nginx,jetty等服务器,但并不清楚它们间的区别,它们中,哪些是Web服务器,哪些是应用服务器?今天就来告诉你 Web服务器 理解WEB服务器,首先你要理 ...
- 痞子衡嵌入式:语音处理工具pzh-speech诞生记(4)- 音频录播实现(PyAudio)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具pzh-py-speech诞生之音频录播实现. 音频录播是pzh-py-speech的主要功能,pzh-py-speech借 ...
- .NET 框架设计 - 模式、配置、工具 Demo 搜索
ps:http://www.ituring.com.cn/article/195770 看完第二章,我也忍了!但是随着第三章“副本”的开启,我的阅读速度开始慢慢的减缓,虽然对其中每一个程序模式的理论也 ...
- 将DataTable数据转换成List泛型数据
这里有一个实体类: public class Menuss { public int Id { get; set; } public string Te ...
- vue-cli3 axios解决跨域问题
这种错误就是跨域问题: 我百度了各种方法,最终下面这种方法解决了,直接上代码: 解决: 如果没安装axios: npm install axios -save //安装axios main.js / ...
- centos7 配置虚拟交换机(物理交换机truck端口设置)(使用brctl)
转自:http://blog.csdn.net/qq_21398167/article/details/46409503 虚拟交换机配置 inux VLAN配置(vconfig) 安装vlan(vco ...
- 7天用Go动手写/从零实现Web框架Gee
设计一个框架 大部分时候,我们需要实现一个 Web 应用,第一反应是应该使用哪个框架.不同的框架设计理念和提供的功能有很大的差别.比如 Python 语言的 django和flask,前者大而全,后者 ...
- tornado自定义分页扩展
一.分页扩展类 #! /usr/bin/env python # -*- coding:utf-8 -*- # __author__ = "TKQ" class Paginatio ...