ASP.NET Core MVC的基础学习笔记
最近由于“武汉肺炎”疫情在家办公,也没闲着,最近学习了一下asp.net core mvc的一些网页开发的的基础知识,话不多说直接上教程!
一、创建Web应用程序
1)创建新项目--->找到 “ASP.NET Core Web 应用程序” 类型的项目(也可以模糊查询:语言选择c#,项目类型选择Web):

2)选择Web 应用程序 (模型视图控制器)--->修改名称--->创建:

3)新建完成后,解决方案出现如图显示

wwwroot 存放网站的 js、css 等前端文件,
Models-模型:封装业务逻辑相关的数据及对数据的处理方法【如图黄框框选中】;
Views-视图: 向用户提供交互界面【如图蓝框框选中】;
Controllers-控制器: 负责控制Model和View【如图红框选中】;
appsettings.json-配置文件: 如可以在其中加入数据库连接字符串,如图:

二、创建实体模型
1)添加一个实体类 (选中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; } }
2)再添加一个实体框架类【数据库上下文类】(同样在Models文件夹下创建,命名我这推荐以Db+name,如DbWwp;)
创建后再继承DbContext
/// <summary>
/// 实体框架 EntityFrameworkCore
/// </summary>
namespace EasyBlog.Models
{
public class DbWwp : DbContext
{
public DbWwp(DbContextOptions<DbWwp> options)
: base(options)
{ }
public DbSet<InfoUser> InfoUsers { get; set; }
public DbSet<InfoBlog> InfoBlogs { get; set; }
public DbSet<InfoLog> InfoLogs { get; set; }
public DbSet<InfoReply> InfoReplys { get; set; }
}
}
3)首先添加两个包:Microsoft.EntityFrameworkCore.sqlserver 和Microsoft.EntityFrameworkCore.Tools
步骤:
右键依赖项-->管理NuGet程序包--->浏览--->搜索包名--->选择需要的包下载并安装

4)在 Startup类中的 ConfigureServices 方法中注册数据库上下文
services.AddDbContext<DbWwp>(options => options.UseSqlServer(Configuration.GetConnectionString("DbWwp")));
5)现在我们打开” 程序包管理器控制台”(工具-->NuGet 包管理器-->程序包管理器控制台),写入命令 “add-migration init” 如下图,添加新的数据库” 迁移”(init--是迁移的名称)。

不要介意add-migration 后面的名字与上图不符哈, 出来这个黄色的后成功一半咯~

Update-Database 然后回车

这时候在上下文中就会出现一个叫做当前创建日期 加上你之前add 后面创建名字的一个记录了添加的” 迁移” 都保存在 Migrations 目录下:

三、新增MVC和EF框架
1)接下来我们开始创建一套完整的MVC及增删改查,所以我们选择 “视图使用 Entity Framework 的 MVC 控制器”(步骤:Controllers文件夹右键 -->添加-->双击控制器-->视图使用 Entity Framework 的 MVC 控制器):

2)接下来下拉选择好模型类(如上面创建的模型类InfoUsers)、下拉选中自己创建的数据上下文类(如上面创建的数据库上下文类),勾上” 生成视图”,点击” 添加” 即可,同时你也可以自己命名,但控制器名称必须以Controller结尾(这是ASP.NET Core MVC的一个约定),这里我们默认命名InfoUsersController

创建完后系统自动帮我们生成了控制器(如图下InfoUsersController)和自动在Views 文件夹下生成 InfoUsers文件夹的增删改查等五个的视图(如图下的Create-增,Delete-删,Details-查,Edit-改,Index-主页):

当然你也可以自己创建View视图,不过添加View视图有两种方法,一种是直接在Views文件夹下添加(右键Views文件夹下的InfoUsers文件夹-->添加-->视图);另外一种是通过Controller中的Action来添加,打开控制器里(如InfoUsersController), 在”return View ();” 的地方右键-->添加视图方法。不过我推荐大家采用后一种方法。

3)采用前面两种方法后会进入如下图添加视图确认窗口,点添加就行

4)这样再添加了一个和特定的Controller和InfoUsers(这里指InfoUsersController和Login)相对应的View(Login.cshtml)并补充代码如下
Login.cshtml
@{
ViewData["Title"] = "登录";
}
<h4>@ViewData["Title"]</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Login">
<div class="form-group">
<label class="control-label">用户名</label>
<input name="UserName" id="UserName" class="form-control" />
</div>
<div class="form-group">
<label class="control-label">密码</label>
<input name="Password" id="Password" type="password" class="form-control" />
</div>
<div class="form-group">
<input type="submit" value="登录" class="btn btn-primary" />
<small>@ViewBag.Msg</small>
</div>
</form>
</div>
</div>
InfoUsersController.cs
public IActionResult Login()
{
return View();
} [HttpPost]
[ActionName("Login")]
public async Task<ActionResult> Logining()
{
var userName = Request.Form["UserName"];
var password = Request.Form["Password"];
var item = db.InfoUsers.Find(userName); if (item != null && password == item.Password)
{ item.DTLogin = DateTime.Now;
db.SaveChanges(); var claims = new List<Claim>(); claims.Add(new Claim(ClaimTypes.Name, userName)); var claimsIdentity = new ClaimsIdentity(claims, "Cookies");
await HttpContext.SignInAsync(new ClaimsPrincipal(claimsIdentity));
return RedirectToAction("Index", "Blog");
}
else
ViewBag.Msg = "登陆失败";
return View();
}
5)最后运行程序(单击IIS Express如图
或按F5),启动后在浏览器地址中后面接上/InfoUsers/Login(浏览器中的地址 xx/InfoUsers/Login与开头的路由规则url:"{controller}/{action}/{id}"对应起来)后按回车Enter。

当可以看到这界面时,说明成功了。
最后,请大家戴口罩,勤洗手,少去人群聚集处。保护好自己不给祖国添麻烦!!!武汉加油!中国加油!!!
ASP.NET Core MVC的基础学习笔记的更多相关文章
- 【笔记目录2】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总
当前标签: ASP.NET Core快速入门 共2页: 上一页 1 2 任务27:Middleware管道介绍 GASA 2019-02-12 20:07 阅读:15 评论:0 任务26:dotne ...
- ASP.NET Core MVC 源码学习:Routing 路由
前言 最近打算抽时间看一下 ASP.NET Core MVC 的源码,特此把自己学习到的内容记录下来,也算是做个笔记吧. 路由作为 MVC 的基本部分,所以在学习 MVC 的其他源码之前还是先学习一下 ...
- ASP.NET Core MVC 源码学习:MVC 启动流程详解
前言 在 上一篇 文章中,我们学习了 ASP.NET Core MVC 的路由模块,那么在本篇文章中,主要是对 ASP.NET Core MVC 启动流程的一个学习. ASP.NET Core 是新一 ...
- ASP.NET Core MVC 源码学习:详解 Action 的激活
前言 在 上一篇 文章中,我们已经学习了 ASP.NET Core MVC 的启动流程,那么 MVC 在启动了之后,当请求到达过来的时候,它是怎么样处理的呢? 又是怎么样把我们的请求准确的传达到我们的 ...
- 你所不知道的ASP.NET Core MVC/WebApi基础系列(一)
前言 最近发表的EF Core貌似有点多,可别误以为我只专攻EF Core哦,私下有时间也是一直在看ASP.NET Core的内容,所以后续会穿插讲EF Core和ASP.NET Core,别认为你会 ...
- ASP.NET Core MVC 源码学习:详解 Action 的匹配
前言 在 上一篇 文章中,我们已经学习了 ASP.NET Core MVC 的启动流程,那么 MVC 在启动了之后,当请求到达过来的时候,它是怎么样处理的呢? 又是怎么样把我们的请求准确的传达到我们的 ...
- 你所不知道的ASP.NET Core MVC/WebApi基础系列 (一)
转自博客:https://www.cnblogs.com/CreateMyself/p/9235968.html 前言 最近发表的EF Core貌似有点多,可别误以为我只专攻EF Core哦,私下有时 ...
- asp.net core mvc视频A:笔记1.基本概念介绍
此笔记来自视频教程 MVC本身与三层架构没有联系 使用VS2017新建一个默认的asp.net core mvc网站,认识结构及文件用途.
- ASP.NET Core快速入门_学习笔记汇总
第2章 配置管理 任务12:Bind读取配置到C#实例 任务13:在Core Mvc中使用Options 任务14:配置的热更新 任务15:配置框架设计浅析 第3章 依赖注入 任务16:介绍- 任务1 ...
随机推荐
- 网站 cache control 最佳实践
推荐阅读: 2020年软件开发趋势 高并发案例 - 库存超发问题 负载均衡的分类及算法 异地多活架构 Postman 的替代品来了 有时,当第二次访问网站时,看起来比较怪,样式不正常. 通常,是因为 ...
- 玩转Django2.0---Django笔记建站基础十(一)(常用的Web应用程序)
第十章 常用的Web应用程序 Django为开发者提供了常见的Web应用程序,如会话控制.高速缓存.CSRF防护.消息提示和分页功能.内置的Web应用程序大大优化了网站性能,并且完善了安全防护机制,而 ...
- L1和L2:损失函数和正则化
作为损失函数 L1范数损失函数 L1范数损失函数,也被称之为最小绝对值误差.总的来说,它把目标值$Y_i$与估计值$f(x_i)$的绝对差值的总和最小化. $$S=\sum_{i=1}^n|Y_i-f ...
- 如梦令编程语言发布 (RML)
如梦令编程语言是在Rebol语言核心语法的基础上,做了一些自以为是的修改而来.谨以此为Rebol语法的传承,略尽绵薄之力. 基本概念 如梦令语言分属Lisp语系,代码本身是一个层层嵌套的Token列表 ...
- c#数字图像处理(五)全等级直方图灰度拉伸
灰度拉伸也属于线性点运算的一种,也可以通过上一节的程序得到.但由于它在点运算的特殊性,所以把它单独列出来进行介绍. 灰度拉伸定义 如果一幅图像的灰度值分布在全等级灰度范围内,即在0~255之间,那么它 ...
- AttributeError: module 'cv2' has no attribute 'SIFT'解决总结
AttributeError: module 'cv2' has no attribute 'SIFT' 遇到该问题时,网友多是建议补个包,即pip install opencv-contrib-py ...
- LXC(LinuX Container)之namespaec和cgroup
LXC(LinuX Container)之namespaec和cgroup namespace概述 从操作系统级上实现了资源的隔离,它本质上是宿主机上的进程(容器进程),所以资源隔离主要就是指进程资源 ...
- 在 Ubuntu 上安装 K8S教程
在 Ubuntu 上安装 K8S教程 1,更新系统源 如果系统本身自带得镜像地址,服务器在国外,下载速度会很慢,可以打开 /etc/apt/sources.lis 替换为国内得镜像源. apt upg ...
- Leetcode 题目整理-2 Reverse Integer && String to Integer
今天的两道题关于基本数据类型的探讨,估计也是要考虑各种情况,要细致学习 7. Reverse Integer Reverse digits of an integer. Example1: x = 1 ...
- kubernetes secret 和 serviceaccount删除
背景 今天通过配置创建了一个serviceaccounts和secret,后面由于某种原因想再次创建发现已存在一个serviceaccounts和rolebindings.rbac.authoriza ...