初识ASP.NET CORE
程序员文章站
2022-07-09 19:00:07
首先创建一个asp.net core web应用程序 第二步 目前官方预置了7种模板项目供我们选择。从中我们可以看出,既有我们熟悉的MVC、WebAPI,又新添加了Razor Page,以及结合比较流行的Angular、React前端框架的模板项目。 空项目模板 Program.cs using S ......
首先创建一个asp.net core web应用程序
第二步
目前官方预置了7种模板项目供我们选择。从中我们可以看出,既有我们熟悉的mvc、webapi,又新添加了razor page,以及结合比较流行的angular、react前端框架的模板项目。
空项目模板
program.cs
using system; using system.collections.generic; using system.io; using system.linq; using system.threading.tasks; using microsoft.aspnetcore; using microsoft.aspnetcore.hosting; using microsoft.extensions.configuration; using microsoft.extensions.logging; namespace webapplication6 { public class program { public static void main(string[] args) { createwebhostbuilder(args).build().run(); } public static iwebhostbuilder createwebhostbuilder(string[] args) => webhost.createdefaultbuilder(args) .usestartup<startup>(); } }
实质就是控制台应用
startup.cs
using system; using system.collections.generic; using system.linq; using system.threading.tasks; using microsoft.aspnetcore.builder; using microsoft.aspnetcore.hosting; using microsoft.aspnetcore.http; using microsoft.aspnetcore.httpspolicy; using microsoft.aspnetcore.mvc; using microsoft.extensions.configuration; using microsoft.extensions.dependencyinjection; namespace webapplication6 { 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.configure<cookiepolicyoptions>(options => { // this lambda determines whether user consent for non-essential cookies is needed for a given request. options.checkconsentneeded = context => true; options.minimumsamesitepolicy = samesitemode.none; }); services.addmvc().setcompatibilityversion(compatibilityversion.version_2_1); } // this method gets called by the runtime. use this method to configure the http request pipeline. public void configure(iapplicationbuilder app, ihostingenvironment env) { if (env.isdevelopment()) { app.usedeveloperexceptionpage(); } else { app.useexceptionhandler("/error"); app.usehsts(); } app.usehttpsredirection(); app.usestaticfiles(); app.usecookiepolicy(); app.usemvc(); } } }
提供最原始的httpcontext
。
web api
创建完整的http服务,使用controller
处理请求,仅返回数据无视图返回
using system; using system.collections.generic; using system.linq; using system.threading.tasks; using microsoft.aspnetcore.mvc; namespace webapplication7.controllers { [route("api/[controller]")] [apicontroller] public class valuescontroller : controllerbase { // get api/values [httpget] public actionresult<ienumerable<string>> get() { return new string[] { "value1", "value2" }; } // get api/values/5 [httpget("{id}")] public actionresult<string> get(int id) { return "value"; } // post api/values [httppost] public void post([frombody] string value) { } // put api/values/5 [httpput("{id}")] public void put(int id, [frombody] string value) { } // delete api/values/5 [httpdelete("{id}")] public void delete(int id) { } } }
startup.cs也加入了相关的mvc的服务和中间件
using system; using system.collections.generic; using system.linq; using system.threading.tasks; using microsoft.aspnetcore.builder; using microsoft.aspnetcore.hosting; using microsoft.aspnetcore.http; using microsoft.aspnetcore.httpspolicy; using microsoft.aspnetcore.mvc; using microsoft.extensions.configuration; using microsoft.extensions.dependencyinjection; namespace webapplication6 { 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.configure<cookiepolicyoptions>(options => { // this lambda determines whether user consent for non-essential cookies is needed for a given request. options.checkconsentneeded = context => true; options.minimumsamesitepolicy = samesitemode.none; }); services.addmvc().setcompatibilityversion(compatibilityversion.version_2_1); } // this method gets called by the runtime. use this method to configure the http request pipeline. public void configure(iapplicationbuilder app, ihostingenvironment env) { if (env.isdevelopment()) { app.usedeveloperexceptionpage(); } else { app.useexceptionhandler("/error"); app.usehsts(); } app.usehttpsredirection(); app.usestaticfiles(); app.usecookiepolicy(); app.usemvc(); } } }
web 应用程序-razor page
在asp.net mvc中razor作为一个高级视图引擎存在,razor提供了一种新的标记语义,其大大减少了用户输入且具有表现力,主要的特点是使用@符号去书写标记。 而在asp.net core中razor不仅仅是一种视图引擎,其提供了一种新的页面设计方式——razor page。其主要的特点在于:
- 基于文件路径的路由系统;
- razor page类似于webform,一种mvvm的架构,支持双向绑定;
- razor page符合单一职责原则,每个页面独立存在,视图和代码紧密组织在一起。
web 应用程序-mvc
using system; using system.collections.generic; using system.diagnostics; using system.linq; using system.threading.tasks; using microsoft.aspnetcore.mvc; using webapplication5.models; namespace webapplication5.controllers { public class homecontroller : controller { public iactionresult index() { return view(); } public iactionresult about() { viewdata["message"] = "your application description page."; return view(); } public iactionresult contact() { viewdata["message"] = "your contact page."; return view(); } public iactionresult privacy() { return view(); } [responsecache(duration = 0, location = responsecachelocation.none, nostore = true)] public iactionresult error() { return view(new errorviewmodel { requestid = activity.current?.id ?? httpcontext.traceidentifier }); } } }
推荐阅读
-
部署 asp.net 网站到 Azure
-
.net core webapi 文件上传在 Swagger 文档中的有好提示处理
-
ASP.NET强大技术支撑,LeaRun V7.0敏捷开发框架——敏捷开发模块
-
创建基于ASP.NET core 3.1 的RazorPagesMovie项目(一)-创建和使用默认的模板
-
Linux服务器部署.Net Core笔记:目录
-
ASP.NET Core Web API 最佳实践指南
-
使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理
-
Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)
-
在net Core3.1上基于winform实现依赖注入实例
-
[笔记]使用Docker部署.NET Core应用程序