asp.netcore系列3项目实战之:NetCore的Web应用程序(参考自:Microsoft教程)天才卧龙

概述:此教程介绍了生成RazorPagesWeb应用的基础知识。具体分为如下部分

首先,我们启用VS新建一个项目:

本篇主要是学习使用NetCore的Razor视图,因此先从最基本的添加项目开始。添加项目完成后,我们发现系统自动生成了以下各项,如下图:

首先我们对项目各文件的执行顺序作个说明:

其次,一起探讨下各个文件夹/文件的作用:

Pages文件夹

1、模板文件,

2、自定义的Razor页面

wwwroot文件夹

appSettings.json

Program.cs

Startup.cs

1、新建一个数据库,命名为:MovieDB

2、创建一张表,命名为:Movie

脚本如下:

createtableMovie(IDintidentity(1,1)primarykey,Titlenvarchar(200),ReleaseDatedatetime,Genrevarchar(200),Pricedecimal(18,2))ViewCode数据库创建完毕,我们插入一条数据:

insertinto[MovieDB].[dbo].[Movie]values('战狼2',getdate(),'影视媒体',18)ViewCode至此,数据准备完毕,下面我们创建数据库链接字符串,打开appsettings.json文件,编辑如下:

新增链接字符串:

注意上述链接字符串中的RazorPagesMovieContext,这是一个数据访问上下文,用于数据库对象(数据表)构建及数据访问,我们可以通过VS创建,下面会逐步介绍,现在我们需要准备和数据表对应的实体类Movie,如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel.DataAnnotations;usingSystem.ComponentModel.DataAnnotations.Schema;usingSystem.Linq;usingSystem.Threading.Tasks;namespaceRazorPagesMovie2.DataModel{publicclassMovie{publicintID{get;set;}[StringLength(60,MinimumLength=3)][Required]publicstringTitle{get;set;}///

///发布日期,Display:展示类型DataType:数据类型日期类型///[Display(Name="ReleaseDate")][DataType(DataType.Date)]publicDateTimeReleaseDate{get;set;}//////价格范围1~100货币类型数字类型///[Range(1,100)][DataType(DataType.Currency)][Column(TypeName="decimal(18,2)")]publicdecimalPrice{get;set;}//////正则表达式最大长度30必填信息///[RegularExpression(@"^[A-Z]+[a-zA-Z""'\s-]*$")][Required][StringLength(30)]publicstringGenre{get;set;}}}ViewCode上述准备完毕后,我们利用VS强大的数据模型绑定来构建增删改查页面,如下:

在Pages文件夹中新建文件夹MoviePages,如下:

右键MoviePages文件夹,选择:添加->新搭建基架的项目(F)...,用于创建增删改查页面及生成RazorPagesMovieContext数据库上下文访问类,如下:

需要将默认的:RazorPagesMovie2.Models.RazorPagesMovie2Context修改为:RazorPagesMovie2.Data.RazorPagesMovie2Context,以便生产一个名为Data的文件夹,用于区分Models文件夹。

这是会生产一个Data的文件夹,有一个类,名称为:RazorPagesMovie2Context,也就是上述提到的数据库访问上下文类,用于数据库访问及数据库对象构建。

如下:

代码如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingMicrosoft.EntityFrameworkCore;usingRazorPagesMovie2.DataModel;namespaceRazorPagesMovie2.Data{publicclassRazorPagesMovie2Context:DbContext{publicRazorPagesMovie2Context(DbContextOptionsoptions):base(options){}publicDbSetMovie{get;set;}}}ViewCode同时在StartUp.cs中也会指定数据库访问链接字符串,如下:

注意:StartUp.cs中的上下文名称应和appsettings.json中的名称一致,如果不一致,会导致找不到链接字符串。

此时,项目基本构建完成,运行如下:

由上图可以,我们根据VS基架模板来生成的增删改查页面对应的.CS文件中有生成相应的增删改查代码,如下:

前端:

@page@modelRazorPagesMovie2.Pages.MoviePages.IndexModel@{ViewData["Title"]="Index";}

Index

CreateNew

@Html.DisplayNameFor(model=>model.Movie[0].Title)@Html.DisplayNameFor(model=>model.Movie[0].ReleaseDate)@Html.DisplayNameFor(model=>model.Movie[0].Price)@Html.DisplayNameFor(model=>model.Movie[0].Genre)@foreach(variteminModel.Movie){@Html.DisplayFor(modelItem=>item.Title)@Html.DisplayFor(modelItem=>item.ReleaseDate)@Html.DisplayFor(modelItem=>item.Price)@Html.DisplayFor(modelItem=>item.Genre)Edit|Details|Delete}ViewCode查询代码:

publicclassIndexModel:PageModel{privatereadonlyRazorPagesMovie2.Data.RazorPagesMovie2Context_context;publicIndexModel(RazorPagesMovie2.Data.RazorPagesMovie2Contextcontext){_context=context;}publicIListMovie{get;set;}publicasyncTaskOnGetAsync(){Movie=await_context.Movie.ToListAsync();}}ViewCode查询表中所有数据,当然,在EFNETCore中也支持Linq查询,如下:

publicasyncTaskOnGetAsync(){varmovies=frommin_context.Movieselectm;if(!string.IsNullOrEmpty(SearchString)){movies=movies.Where(s=>s.Title.Contains(SearchString));}Movie=awaitmovies.ToListAsync();}ViewCode增加页面代码如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.AspNetCore.Mvc.RazorPages;usingMicrosoft.AspNetCore.Mvc.Rendering;usingRazorPagesMovie2.Data;usingRazorPagesMovie2.DataModel;namespaceRazorPagesMovie2.Pages.MoviePages{publicclassCreateModel:PageModel{privatereadonlyRazorPagesMovie2.Data.RazorPagesMovie2Context_context;publicCreateModel(RazorPagesMovie2.Data.RazorPagesMovie2Contextcontext){_context=context;}publicIActionResultOnGet(){returnPage();}[BindProperty]publicMovieMovie{get;set;}publicasyncTaskOnPostAsync(){if(!ModelState.IsValid){returnPage();}_context.Movie.Add(Movie);await_context.SaveChangesAsync();returnRedirectToPage("./Index");}}}ViewCode看到:await_context.SaveChangesAsync();是不是很熟悉,.SaveChanges其实就是EF增加删除更新的最常用方法,呵呵。

THE END
1.在IIS上部署ASP.NETCoreWebAPI和BlazorWasm详细教程前段时间我们完成了七天.NET 8 操作 SQLite 入门到实战的开发系列教程,有不少同学留言问如何将项目发布部署到IIS上面运行。本篇文章我们就一起来讲讲在IIS上部署ASP.NET Core Web API和Blazor Wasm。 前提条件 安装.NET Core SDK https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0 ...https://developer.aliyun.com/article/1581507
2.NCF实战功能(三)using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.RazorPages;using Senparc.Ncf.Service;using Microsoft.Extensions.DependencyInjection;using Senparc.Ncf.Core.Models;using Senparc.CO2NET.Trace;using Senparc...https://xie.infoq.cn/article/2eb4ced38ad38c0646c7d1f7a
3.ASP.NETCoreWebApi构建API接口服务实战演练Install-Package Swashbuckle.AspNetCore.SwaggerGen ASP.NET Core WebApi跨平台技术从入门到实战演练 四、ASP.NET Core WebAPI如何实现多接口版本控制 a)使用不同的 API 名称 https://yuiter.com/api/Secret/Login ——1.0 https://yuiter.com/api/Secret/NewLogin ——2.0 ...https://www.jianshu.com/p/1276f717d2e9
4.asp.netmvccore集成微信登录功能ASP.NET网页微信登录授权,获取用户基本信息 微信认证流程(我自己简称三次握手): 1、用户同意授权,获取code 2、通过code换取网页授权access_token,用户openId等信息 3、通过access_token和用户的openId获取该用户的用户信息 因为第一步必须要经过微信的登录授权,不能网页后端请求,所以先要经过用户同意,通过页面网页请求组...https://www.iteye.com/resource/hujiasuta-13077194
5.aspnetcore源码解读理想股票技术论坛实战 涨停 研报 热门 精华 悬赏 技巧 排行 说吧 金钻 自选 选股 驿站 任务 新手 签到 竞猜 帮助aspnetcore源码解读,aspnetcore源码解读, ASP.NET Core源码分析, 源代码解读 ASP.NET Core源码解读是对ASP.NET Core框架源代码的深入分析和理解。包括对其架构、设计思想、实现原理等方面的探讨和研究。通过解读源码,可...https://www.55188.com/tag-9766754.html
6.asp.core权限控制怎么做,需要控制到每个方法微软技术在ASP.NET Core应用程序中实现细粒度的权限控制,你可以按照以下步骤进行: 权限控制框架的选择: ASP.NET Core 内置了身份验证和授权中间件,提供了基本的权限控制功能。对于更复杂的权限控制,你可以考虑使用如 ASP.NET Core Identity、Policies 或第三方库如 AspNetCore.Identity.MongoDB(如果使用MongoDB作为数据库)等...https://ask.csdn.net/questions/8131604/54801633
7.清华大学出版社《ASP.NET Core微服务实战》的补充材料(示例代码、练习素材等)可在此处下载:https://github.com/microservices-aspnetcore。 《ASP.NET Core微服务实战》就是为了帮你完成工作。你通常可在程序或者文档中使用《ASP.NET Core微服务实战》提供的代码,不需要与我们取得联系获得许可,但如果要复制大量的程序,或将书中的代...http://www.tup.tsinghua.edu.cn/booksCenter/preface.html?id=08179801
8.最新C#.NetCore零基础从入门到精通实战教程全集C#SqlServer...157 2AspNetCore_RabbitMQ.mp4 157 AspNetCore_RabbitMQ.mp4 158 AspNetCore_RabbitMQ_Exchange.mp4 159 2AspNetCore_RabbitMQ.mp4 160 AspNetCore31Practical.mp4 161 AspNetCore31Middleware.mp4 162 AspNetCore31IOC.mp4 163 AspNetCore31AOP.mp4 164 AspNetCore31AOPAdvanced.mp4 ...https://www.youxuan68.com/computer/163547.html
1.教程:在ASP.NETCore中开始使用RazorPagesMicrosoftLearn// Configure the HTTP request pipeline.if(!app.Environment.IsDevelopment()) { 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(); } ...https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/razor-pages-start
2.ASP.NETCore基于WebSocket实现消息推送实战演练三、ASP.NET Core基于WebSocket实现消息推送实战演练 ASP.NET Core 中的 WebSocket 支持 | Microsoft Docs https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/websockets?view=aspnetcore-3.1 使用步骤: 1、配置中间件 安装Microsoft.AspNetCore.WebSockets 包。 在 Startup 类的 Configure 方法中添加 WebS...https://cloud.tencent.com/developer/article/1684686
3.ASP.NetCore使用Swagger实战实用技巧然后,就可以使用了,请求对应地址https://localhost:44375/swagger/index.html,现在就可以看到示例代码中的WeatherForecast.cs了。 到此这篇关于ASP.NetCore使用Swagger实战的文章就介绍到这了,更多相关ASP.NetCore使用Swagger内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!https://www.jb51.net/article/199401.htm
4.ASP.NETCore中怎么利用WebSocket实现消息推送将想法与焦点和您一起共享 ASP.NETCore中怎么利用WebSocket实现消息推送 ASP.NET Core中怎么利用WebSocket实现消息推送,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 成都创新互联公司网站建设公司,提供做网站、网站制作,网页设计,建网站,PHP网站建设...http://chengdu.cdxwcx.cn/article/ijpjoj.html
5.群晖NAS中部署ASP.netCoreDocker应用本篇文章演示了使用Dockerfile在Linux(ubuntu16.04)系统上构建ASPNetCore应用,并且在一个解决方案中存在多个项目之间的引用。还会使用到私有Nuget包的引用。 构建...可以构建两个项目,一个为Web,另外一个基础类库。为了演示对私有Nuget包的编译,我们在Web层上引用了以下的私有Nuget包并且引用了本地项目: 你可以按照...https://www.pianshen.com/article/7404322797/
6.GitHubiaspnetcore/BlazorServerPublic NotificationsYou must be signed in to change notification settings ...[Original]网站前端性能提升优化要点实战记录- 实时更新,优化要点备忘录. 浅谈浏览器http的缓存机制- 针对...网页优化SEO-HTML5与搜索引擎优化- 网页结构设计优化SEO-HTML5与搜索引擎优化. Header ...https://github.com/iaspnetcore/BlazorServer
7.使用API接下来我将使用一个 ASP.NET Core API。为简单起见,我不会展示如何在 ASP.NET Core 项目中设置 Swashbuckle。 ASP.NET Core 和 Swashbuckle CLI 由于你已将 Swashbuckle 配置到你的 ASP.NET Core 项目中,因此你可以安装一个名为 Dotnet 的工具Swashbuckle.AspNetCore.Cli,它是一个非常简单的工具,可以提取swagger...https://apifox.com/blog/api-first-design-restfulapi-3/
8.GitHubRepositoriesRanking基于网页的开源协同多语言文本标注工具 、PreNLP:自然语言预处理库、简单的简历解析器,用来从简历中提取...(Text Similarity)计算等,涉及到各种与nlp相关的算法,基于keras和tensorflow 、Python文本挖掘/NLP实战...491 dotnet/aspnetcore C# 35.475k ASP.NET Core is a cross-platform .NET framework for building...https://wangchujiang.com/github-rank/repos.html
9.如何使用C#.NET框架在HTTP请求中添加2个身份验证头net/making-authenticated-cross-origin-requests-with-aspnetcore-identity.../ 使用 ASP.NET Core ....NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRFCSRF)攻击处理 ASP.NET Core 中包含https://cloud.tencent.com.cn/developer/information/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8C%23%20.NET%E6%A1%86%E6%9E%B6%E5%9C%A8HTTP%E8%AF%B7%E6%B1%82%E4%B8%AD%E6%B7%BB%E5%8A%A02%E4%B8%AA%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E5%A4%B4-article
10.NuGetGalleryHomeNuGet is the package manager for .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by all package authors and consumers. Learn New to NuGet? Start with a walkthrough showing how NuGet powers your ....https://www.nuget.org/
11.asp.netcore系列4项目实战之:NetCore的MVC模式(参考自...asp.net core 系列 4 项目实战之:NetCore 的 MVC模式(参考自:Microsoft教程) 十年河东,十年河西,莫欺少年穷 学无止境,精益求精 上一节中,学习了NetCore 的web应用程序,因为Cshtml页面自带.Cs文件,所以类似于微软早期的webForm应用。 本节一起学习NetCore 的MVC模式,如下,新建一个项目: ...https://blog.51cto.com/15316082/3208553