zoukankan      html  css  js  c++  java
  • Asp.net core 2.0.1 Razor 的使用学习笔记(五)

    按说这里应该写关于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(10, ErrorMessage = "{0} 必须至少包含 {2} 个字符,最多{1}个字符,汉字为2个字符。", MinimumLength = 4)]
            [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 Pagesguanggao --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,然后重新运行命令。

  • 相关阅读:
    安卓虚拟机adb shell sqlite3数据库
    gridview安卓实现单行多列横向滚动
    安卓gridview 网格,多行多列实现
    安卓5.0 沉浸式状态栏
    Acionbar logo
    .replace(R.id.container, new User()).commit();/The method replace(int, Fragment) in the type FragmentTransaction is not app
    导航抽屉图标+文字
    透明ActionBar
    去掉Actionbar下的shadow
    沉浸式导航栏
  • 原文地址:https://www.cnblogs.com/chonghanyu/p/8418761.html
Copyright © 2011-2022 走看看