前言 要熟练使用Core平台开发项目,必先熟悉一种新的Webs页面即Razor Pages,Razor Pages是一种包含C#代码的web页面,服务后端包含Models,前端包含C#,相当于简化了Controllers的MVC Views页面。
Razor Pages页面特点如下:
1,文件名首位不能是下划线
2,文件扩展名为.cshtml
3,文件的第一行是 @page
4,Razor代码块被@{ }包裹,内部为标准C#代码。
5,PageModel,推荐使用页面模型,页面模型通过 @model 模型名称 引入页面中。
学些目标:
1,创建Razor Pages 项目、了解常用的Nuget包
2,了解Razor Pages基本的页面组成
3,与sqlserver数据库交互完成CRUD操作
4,Razor Pages搜索、验证等操作。
准备工具:
Vs2017以上的版本和sqlserver2008以上版本
一、创建Razor Pages
在Vs中新建一个项目名称为RazorPages项目,项目类型选择“Asp.Net Core Webs应用”,目标框架选择“.Net Core 3.1”。
Core下基本的Razor Pages框架目录如下,页面默认在Pages文件夹里,wwwroot文件夹存储Css和Js页面样式文件,“appsettings.json”为生成部署文件,“Program.cs”中的main函数是主程序的入口,“Startup.cs”中配置sql连接,路由注册服务等后面会详细讲到,(关注@高山流水学编程不迷路)
@page @model IndexModel @{ ViewData["Title"] = "Home page"; } <div class="text-center"> <h1 class="display-4">Welcome</h1> <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p> </div>
二、为Razor添加Models模型,模型类名称为UserData。操作步骤:右键点击解决方案“RazorPages”,添加Models文件夹,然后右键点击“Models”文件夹添加一个“UserData.cs”的类文件,如下图所示。
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Threading.Tasks; namespace RazorPages.Models { public class UserData { [Key, Column(Order = 1)] public int UserId { get; set; } public string UserName { get; set; } public string Password { get; set; } } }
首先右键点击Pages文件夹,在它下面添加一个“Users”文件夹,右键点击“Users”,依次点击“添加”->“新搭建基架的项目”->"使用实体框架生成Razor Pages页面(CRUD)"
选择模型类
注意在生成的结果中报错,提示缺少依赖的NuGet包可以点击通过右键点击“项目资源”,“”管理NuGet程序包”来添加。在右侧选择安装,安全前注意选择对应的版本,比如:Core3.1选择sql数据包版本最好选择3.0,详细官网有介绍。
常用的几个NuGet数据包如下:
Microsoft.EntityFrameworkCore.sqlServer(选择版本:V3.0) ==> sqlserver数据库连接使用
Microsoft.EntityFrameworkCore.Tool(选择版本:V3.0) ==> 完成sqlserver数据CRUD
EntityFramework.sqlServerCompact (选择版本:V4.1) ==> sqlserver数据库操作和交互
下面是非常重要的三步:一是在Startup.cs中注册如下ConfigureServices的服务(如果系统已生成,不用添加),二是在appsettings.json文件中添加sqlserver数据库连接字符串。如下所示
注意:Startup.cs中“GetConnectionString("MVCsqlContext")”方法名称与appsettings.json中的ConnectionStrings": {"MVCsqlContext": }名称一致。
public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddDbContext<RazorPagesContext>(options => options.UsesqlServer(Configuration.GetConnectionString("MVCsqlContext"))); }
{ "Logging": { "LogLevel": { "Default": "@R_161_4045@ion", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "@R_161_4045@ion" } }, "AllowedHosts": "*", "ConnectionStrings": { "MVCsqlContext": "Server=localhost;Database=InfoUser;User ID=sa;Password=sa;" } }
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using RazorPages.Data; namespace RazorPages { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddDbContext<RazorPagesContext>(options => options.UsesqlServer(Configuration.GetConnectionString("MVCsqlContext"))); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); }); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。