Scaffolding Template on Asp.Net Core Razor Page
Scaffolding Template Intro
我们知道在Asp.Net MVC中,如果你使用的EF的DBContext的话,你可以在vs中通过右键解决方案-添加控制器-添加包含视图的控制器,然后vs会根据你选择的Model自动生成相应的CURD的控制器和View,非常便利,这种就叫做 ASP.NET Scaffolding Template,之前雪燕大大有过一篇介绍,有兴趣可以看看【传送门】
大家知道近期Asp.Net Core2.0发布了,微软也推出了Razor Page来作为默认的Asp.Net Core Web项目,但一开始并没有提供Scaffolding Template(后简称ST)功能,使我们每次对于一个Model需要进行4-5个页面和PageModel的编写,代码量比Asp.Net MVC多了不少,好在ST及时出现,不过这次并没有结合到VS中,我们需要通过添加一个生成包及CMD命令来完成,虽然复杂了点,但至少编码量少了,Let’s do it!
Hello Scaffolding Razor Page
Step 1 : 创建Razor Page 项目
Step 2 : 创建一个Model,在这里我们创建一个Blog实体类:
public class Blog
{
public int BlogId { get; set; } public string Title { get; set; } public string Author { get; set; } public DateTime CreatedDate { get; set; }
}
Step 3 : 创建DbContext:
public class BlogDbContext : DbContext
{
public BlogDbContext(DbContextOptions<BlogDbContext> options) : base(options)
{
} public DbSet<Blog> Blogs { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>().ToTable("Blog");
}
}
Step 4 : 配置连接字符串并把这个DbContext通过DI的方式注册到项目容器中
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<BlogDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("BlogDbContext")));
services.AddMvc();
}
记得在配置文件(appsettings.json)中加入connectString:
{
"ConnectionStrings": {
"MovieContext": "Server=(localdb)\\mssqllocaldb;Database=DemoDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
Step 5 : 安装CodeGeneration package,工具-Nuget包管理器-程序包管理控制台
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Version 2.0.
Step 6 : 添加数据迁移-更新到数据库:
Add-Migration Initial
Update-Database
[这里一定要做下迁移,否则生成代码会不成功,我估计生成代码会去读取数据库]
Step 7 : 打开终端(CMD or Powershell)
先移步到项目目录(Program.cs和Startup.cs这个目录)
我的是:E:\project\aspnet\Demos\WebApplication4\WebApplication4
然后输入以下命令:
dotnet aspnet-codegenerator razorpage -m Blog -dc BlogDbContext -udl -outDir Pages\Blogs –referenceScriptLibraries
ok,如果顺利你就能看到如下提示:

我们可以看到它自动创建了相应的View和PageModel。
虽然没有MVC那么便利,但至少也节约了我们不少时间。
Issues
自动生成的DbContext的DbSet名字不正确
我们看下Create.cshtml.cs代码,其中一段:
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
} _context.Blog.Add(Blog);
await _context.SaveChangesAsync(); return RedirectToPage("./Index");
}
可以看到 它使用了Blog作为实体类的集合名了,但在Step 3中,我使用的是Blogs,这应该是个bug,想提交的,但没有找到相应的项目。
写在最后
后天就是伟大的祖国生日了,大家节日快乐!明天去HK迪士尼
好期待,嘿嘿。
后面我会把用Razor Page遇到的问题总结放上来,非常看好它,相信会越来越火的。
PS:asp.net core QQ学习群:376248054 通关密码:cnblogs(无密码一律不通过)
Scaffolding Template on Asp.Net Core Razor Page的更多相关文章
- ASP.NET Core - Razor 页面简介
简介 随着ASP.NET Core 2 即将来临,最热门的新事物是Razor页面.在之前的一篇文章中,我们简要介绍了ASP.NET Core Razor 页面. Razor页面是ASP.NET Cor ...
- ASP.NET Core - Razor页面之Handlers处理方法
简介 在前一篇文章中,我们讨论了Razor页面.今天我们来谈谈处理方法(Handlers). 我们知道可以将代码和模型放在 .cshtml 文件里面或与 .cshtml 匹配的 .cshtml.cs ...
- ASP.NET Core Razor中处理Ajax请求
如何ASP.NET Core Razor中处理Ajax请求 在ASP.NET Core Razor(以下简称Razor)刚出来的时候,看了一下官方的文档,一直没怎么用过.今天闲来无事,准备用Rozor ...
- 学习ASP.NET Core Razor 编程系列一
一. 概述 .NET Core 1.0发布的时候就想进行学习的,不过根据微软的以往的发布规律1.0版可以认为是大众测试版,2.0才算稳定.现在2.1都已经发布了预览版,之前对其"不稳定&qu ...
- 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列七——修改列表页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列八——并发处理
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列九——增加查询功能
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
随机推荐
- android如何与asp.net服务端共享session
近期需要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的session值中,当客户端收到短信并提交短信码时由asp.net服务端进行判断,那么如何共享这个session那么需 ...
- 零基础如何一步一步开始搭建高性能直播平台?现以GitChat·架构来进行说明
前言 现在直播已经成为移动互联网时代一个新的重要流量入口,从YY.斗鱼到花椒直播,直播已经成为人们分享交流的新方式,应用场景众多,主要分为: 金融类直播:金融直播可应用于实时解盘,在线专家讲座,专家在 ...
- linux环境下安装nginx步骤
开始前,请确认gcc g++开发类库是否装好,默认已经安装. ububtu平台编译环境可以使用以下指令 apt-get install build-essential apt-get install ...
- Zookeeper和 Google Chubby对比分析
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt375 随着云计算的推广,云平台的设计和实现越来越复杂,很多系统属性如一致性和 ...
- eclipse+git
最近朋友都推荐使用github管理自己的项目,而且免费用户可以有5个仓库,恰好我也想了解下git,借此机会学习一下.github官方指南使用独立第三方git工具来进行版本控制,并不借助于eclipse ...
- 团队作业4--第一次项目冲刺(Alpha版本)6
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 1.对功能界面进行优化 2.对算法进行改进优化,提高运行速度 四.困难与问题 首先我们团队通过讨论,对功能界面进行了优化,让界 ...
- 【Beta】 第四次Daily Scrum Meeting
一.本次会议为第四次meeting会议 二.时间:10:00AM-10:20AM 地点:陆大楼 三.会议站立式照片 四.今日任务安排 成员 昨日任务 今日任务 林晓芳 查询app提醒功能模块和用户登录 ...
- 【Beta阶段】第四次scrum meeting
Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 查找适合的素材模块,和105一起把手势功能连接到APP上 100% 查阅换 ...
- 201521123028 《Java程序设计》第8周学习总结
1. 本周学习总结 2. 书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 Ans: 在这一题中我们需要写两个函数,分别是remove()和convertStringToLis ...
- 201521145048《Java程序设计》第5周学习总结
1. 本章学习总结 2. 书面作业 Q1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 错误 ...