按说这里应该写关于Role角色类的笔记,但是我还没时间实验这块,所以等以后我搞定了再来分享。现在先写其他部分。

Asp.net core 2.0.1 Razor 的使用学习笔记——建立模型和基本页面

按照微软官网提供的资料应该是”项目 >“添加” > “新建文件夹”。 将文件夹命名为“Models”。

但我个人并没有新建这个文件夹,我采用了在“data”文件夹下建立模型。理由是默认的ApplicationUser.cs在这里且ApplicationDbContext.cs文件存在,所以没必要换其他文件夹。

一、建立数据模型。

“Data”右键》添加》类,命名您的类文件(这里需要注意大小写  建议遵守规范,例如:GuangGao),并在public class GuangGao{}中写入如下代码:

        public int Id { get; set; }

        [DataType(DataType.Text)]
public string 广告名称 { get; set; } [StringLength(, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多{1}个字符,汉字为2个字符。", MinimumLength = )]
[DataType(DataType.Text)]
public string 所属行业 { get; set; }

二、更新添加数据库连接类。

打开“data”文件夹下的ApplicationDbContext.cs 在public MovieContext(DbContextOptions<MovieContext> options): base(options){}添加上面建立的数据模型。

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Models
{
public class MovieContext : DbContext
{
public MovieContext(DbContextOptions<MovieContext> options)
: base(options)
{
}
//添加新建的数据模型
public DbSet<GuangGao> guanggao { get; set; }
}
}

编辑完成后记得编译下,这样报错少。

三、进行数据库迁移。

更改好数据库连接类后,应该重新编译下,然后进行此操作。这里我用的是默认的连接字符串,所以不涉及添加或修改连接字符串和注册数据库。有需要的朋友点这里(微软官方教程)

左下角》程序包管理器控制台 (或者 从“工具”菜单中,选择“NuGet 包管理器” > “包管理器控制台”)。

在PM>后面输入迁移命令:Add-Migration xxxx     xxxx为你能简明说明的此次更新内容,回车,正常完成后控制台会出现“Done”字样。

此命令完成后会在“Data”》“migrations”文件下生成当前日期开头_ 你xxxx为结尾的.cs迁移文件。

四、更新数据库。

在程序包管理器控制台PM>后面输入更新命令:Update-Database 回车,正常完成后控制台会出现“Done”字样。

此时,你可以更新下数据库,就能看到新生成的数据库表了。

这里说下,这里和mvc版本有点不同,mvc是你建立控制器并生成视图后,输入迁移命令:Add-Migration xxxx 后系统才会自动更新“Data”》“migrations”的迁移文件。

五、建立基本页面。

原来是vs自动建立对应的基本页面,但这里不是。(微软官方教程是需要用dotnet aspnet-codegenerator razorpage命令来建立。)

具体方法是:

①在Pages文件夹中新建一个跟添加的类同名的文件夹,例如:GuangGao

②在GuangGao文件夹上右键》Razor页面...(或者“新搭建基架的项目”)》使用实体框架生成Razor页面(CRUD)》添加  ,在弹出的窗口中选择对应数据模型和数据连接,然后确定。

vs会自动生成相关的页面。

这里需要注意:可能是Razor是新技术,vs对它的支持还不完善,生成的新页面是有bug的,具体体现在如下细节:

①using xxxx.Data 不生效  这里其实简化 private readonly xxxx.Data.ApplicationDbContext _context;为private readonly ApplicationDbContext _context; 即可,不过个人倒觉得不用修改,引用个空间,应该不如指定到细节节约资源吧。

②public GuangGao GuangGao { get; set; }  这里程序识别public 后面的GuangGao为空间,修正措施:在public后面添加上Data.。例如public Data.GuangGao GuangGao { get; set; }。

③_context.GuangGao中找不到GuangGao的定义,修正措施:将GuangGao改为guanggao,例如:_context.guanggao。

个人估计在后续的vs更新中会微软应该会修正这些错误。

让我严重吐下槽:VS这版(vs版本:15.5.6  。net版本:4.7.02558)的Razor页面自动生成就是坑爹货,它自动生成的页面真是能坑死你不带商量的。到处错误,到处bug。

具体自动生成的坑爹处,我下一篇全面奉上,因为这些隐秘的坑爹bug,足足耽误了我3天的时间。

另外以下是官方提供的上述操作的方案(有意的朋友可以自己试验,好像也存在问题):

1、在项目方案名称上右键》在文件资源管理器中打开文件夹  打开后应该是项目代码的根目录(包含 Program.cs、Startup.cs 和 .csproj 文件的项目目录中)

2、空白区域 按shift+右键》在此次打开命令窗口

3、在命令窗口下粘贴下面代码:

dotnet aspnet-codegenerator razorpage -m guanggao -dc ApplicationDbContext -udl -outDir Pages\guanggao --referenceScriptLibraries

参数意义:-m 模型的名称     -dc 数据库连接      -udl  使用默认布局。    -outDir   用于创建视图的相对输出文件夹路径。    --referenceScriptLibraries 向“编辑”和“创建”页面添加 _ValidationScriptsPartial。

4、如遇下面错误采取对应措施。

①、No executable found matching command "dotnet-aspnet-codegenerator"。

错误原因:命令行中的路径目录不对。  修正措施:修正命令行中的路径到正确目录(包含 Program.cs、Startup.cs 和 .csproj 文件的项目目录中)。

②、The process cannot access the file 'RazorPagesMovie/bin/Debug/netcoreapp2.0/RazorPagesMovie.dll' because it is being used by another process.

修正措施:退出 Visual Studio,然后重新运行命令。

Asp.net core 2.0.1 Razor 的使用学习笔记(五)的更多相关文章

  1. Asp.net core 2.0.1 Razor 的使用学习笔记(六)

    Asp.net core 2.0.1 Razor 的使用学习笔记——基本页面的建立 VS这版(vs版本:15.5.6  .net版本:4.7.02558)的Razor页面自动生成就是坑爹货,它自动生成 ...

  2. Asp.net core 2.0.1 Razor 的使用学习笔记(四)

    ASP.net core 2.0.1 中 asp.net identity 2.0.1 的基本使用(三)—用户注册 一.修改用户注册 1.打开Pages文件夹>Account>Regist ...

  3. Asp.net core 2.0.1 Razor 的使用学习笔记(三)

    ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(二)—用户账户及cookie配置 修改用户账户及cookie配置 一.修改密码强度和用户邮箱验证规则 ...

  4. Asp.net core 2.0.1 Razor 的使用学习笔记(二)

    ASP.net core 2.0.1 中 asp.net identity 2.0.1 的基本使用(一)—启用用户管理 一.修改和启用默认的用户账户管理和角色管理 在Data目录中添加Applicat ...

  5. Asp.net core 2.0.1 Razor 的使用学习笔记(一)

    环境:vs2017 版本:15.5.6 一.新建项目 1.文件>新建>项目>Visual c#>.NET Core>ASP.NET Core Web应用程序(“.NET ...

  6. ASP.Net Core 5.0 MVC中AOP思想的体现(五种过滤器)并结合项目案例说明过滤器的用法

    执行顺序 使用方法,首先实现各自的接口,override里面的方法, 然后在startup 类的 ConfigureServices 方法,注册它们. 下面我将代码贴出来,照着模仿就可以了 IActi ...

  7. 在 ASP.NET Core 中发送邮件遇到的坑_学习笔记

    功能需求 因为项目需要有个忘记密码验证邮箱再重新修改密码的功能,然后我选用了很简单的一个方案,通过验证登录用户的邮箱然后发送邮件,通过这个邮件发送的链接地址来最后实现密码修改的小功能. 项目环境及实现 ...

  8. ASP.NET Core 2.0 自定义 _ViewStart 和 _ViewImports 的目录位置

    在 ASP.NET Core 里扩展 Razor 查找视图目录不是什么新鲜和困难的事情,但 _ViewStart 和 _ViewImports 这2个视图比较特殊,如果想让 Razor 在我们指定的目 ...

  9. Razor Page–Asp.Net Core 2.0新功能

    Razor Page介绍 前言 上周期待已久的Asp.Net Core 2.0提前发布了,一下子Net圈热闹了起来,2.0带来了很多新的特性和新的功能,其中Razor Page引起我的关注,作为web ...

随机推荐

  1. 多个tab选项卡

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. iOS 使用矢量图

    iOS 使用矢量图 iOS 图标通常用 PNG 格式的图片.PNG 图片放大到超过自身的大小就会模糊.可以使用 PDF 格式的矢量图,优点是任意改变图片大小并且保持清晰度. 简单使用 与 PNG 格式 ...

  3. 关于JS中变量提升的规则和原理的一点理解(二)

    上篇文章中讲到变量提升和函数提升的先后顺序时蒙了,后来去查了一下资料,特别整理一下. 在<你不知道的JavaScript(上卷)>一书的第40页中写到:函数会首先被提升,然后才是变量. 书 ...

  4. JavaSE(四)之接口、访问控制

    上面我们学习了几个修饰符,在开发中经常会用的到,所以必须熟练的掌握.接下来我学习一下接口和访问控制. 一.接口 一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方 ...

  5. Codeforces Round #451 (Div. 2)-898A. Rounding 898B.Proper Nutrition 898C.Phone Numbers(大佬容器套容器) 898D.Alarm Clock(超时了,待补坑)(贪心的思想)

    A. Rounding time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  6. ThinkPHP3.2基础知识(二)

    1.单入口模式的好处: 安全,灵活.可集中进行安全处理,访问统计等统一控制. 2.入口文件中为什么要判断PHP版本,TP要求PHP的版本是什么? 因为ThinkPHP3.2版本只能在PHP版本5.3. ...

  7. haslib 模块

    一.模块简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串( ...

  8. 解析Python中的yield关键字

    前言 python中有一个非常有用的语法叫做生成器,所利用到的关键字就是yield.有效利用生成器这个工具可以有效地节约系统资源,避免不必要的内存占用. 一段代码 def fun(): for i i ...

  9. 96、python version 3.6 required,which was not fount in the registry(python3.6安装scrapy)

    在安装scrapy时遇到问题 环境:win10(64位), Python3.6(64位) 安装scrapy: 1.安装wheel(安装后,便支持通过wheel文件安装软件) pip3 install ...

  10. Spark学习笔记1(初始spark

    1.什么是spark? spark是一个基于内存的,分布式的,大数据的计算框架,可以解决各种大数据领域的计算问题,提供了一站式的服务 Spark2009年诞生于伯克利大学的AMPLab实验室 2010 ...