东营网站建设推广哪家好,中国企业网信息查询,outlook企业邮箱注册申请,漯河最新今天的消息开始 在上一篇文章#xff1a;dotnet core多平台开发体验 #xff0c;体验了一把dotnet core 之后#xff0c;现在想对之前做的例子进行改造#xff0c;想看看加上mvc框架是一种什么样的体验#xff0c;于是我就要开始诞生今天的这篇文章来分享我的感受了。 一、项目改造加… 开始 在上一篇文章dotnet core多平台开发体验 体验了一把dotnet core 之后现在想对之前做的例子进行改造想看看加上mvc框架是一种什么样的体验于是我就要开始诞生今天的这篇文章来分享我的感受了。 一、项目改造加入mvc框架 首先我们先修改project.json文件加入mvc框架的依赖、添加发布时候的发布的包含内容、还有就是编译选项修改前后的对比如下图。 第二我们对Startup.cs进行修改以让能加载mvc框架进行工作。如下图把我们原来输出到页面的内容给删除掉修改成使用mvc并配置mvc的路由信息。同时还需要把mvc给加入到services里面。 第三我们要添加下 视图和控制器创建Controllers和Views两个目录。并且添加HomeController控制器和它对应的视图。 HomeController.cs的内容 using Microsoft.AspNetCore.Mvc;namespace LearnDotnetCore.Controllers{ public class HomeController : Controller{ public IActionResult Index() { return View();}}
} Home/Index.cshtml的内容 Hello from ASP.NET Core MVC! 到这里改造加入的内容已经完成了然后输入命令来下载依赖包和编译运行 dotnet restore dotnet run Project LearnDotnetCore (.NETCoreApp,Versionv1.0) will be compiled because inputs were modified
Compiling LearnDotnetCore for .NETCoreApp,Versionv1.0Compilation succeeded. 0 Warning(s) 0 Error(s)Time elapsed 00:00:04.0228759Hosting environment: Production
Content root path: /Users/caipeiyu/Documents/code/c#/LearnDotnetCore
Now listening on: http://localhost:5000Application started. Press CtrlC to shut down. 输入上面两个命令后显示编译成功并运行起来。 然后打开浏览器输入地址http://localhost:5000/ 浏览器显示内容 Hello from ASP.NET Core MVC!。到这里我们已经成功的给添加上mvc框架并且很好的运行起来但是界面好像挺单调可以添加点其他的内容让显示充实的。添加mvc框架进来如此的简单内容如此的少文章到这里结束肯定不是我的风格了篇幅不够放首页等下不小心就被移除了这肯定是不能忍受的啦。下面可以来研究下这个mvc的简单运行原理然后分享一下怎么说也得凑点字数。 二、ASP.NET Core MVC运行原理初探 首先我们先了解一下什么是mvc模式什么是mvc框架。其实像我们经常说的mvc很多讲的都是这么一个mvc框架而不是讲的什么mvc模式。需要明白的一点是 MVC模式Model–view–controller是软件工程中的一种软件架构模式,而aps.net mvc是一种对mvc模式实现的一个框架。 参考资料https://zh.wikipedia.org/wiki/MVC 自己实现简单的mvc 在一开始假设我们没有 asp.net mvc 框架 那么我们自己想要实现一个mvc模式的话那么我们能如何去实现呢 首先我们来新建一个web项目如果像前面那样用dotnet new建立一个项目然后再改造感觉还是比较麻烦。这里有另一种建议使用Yeoman 来新建立项目参考https://docs.asp.net/en/latest/client-side/yeoman.html?#building-projects-with-yeoman安装细节这里不做翻译介绍请自行研究。安装完这个东西后我们可以新建立一个Empty Web Application项目。建立完成项目后我们可以来建立一个mvc实现代码。 首先我们可以建立一个 Model public class MyModel{ public string Name{get;set;}
} 然后建立一个 View using Microsoft.AspNetCore.Http;public class MyView{ private MyModel _model; public MyView(MyModel model){_model model;} public async System.Threading.Tasks.Task Show(HttpContext context) { await context.Response.WriteAsync($Hello {_model.Name});}
} 最后建立一个Controller public class MyController{ public MyView Index(){MyModel model new MyModel(){NameI am Home!}; return new MyView(model);} public MyView About(){MyModel model new MyModel(){NameI am About}; return new MyView(model);}} 建立完成后我们就可以在入口处调用我们Controller,入口为Startup类的方法Configure里面的app.Run修改代码如下 public void Configure(IApplicationBuilder app) {MyController controller new MyController();app.Run(async (context) { switch (context.Request.Path.Value){ case /about: await controller.About().Show(context); break; default: await controller.Index().Show(context); break;}});} 再运行 dotnet run,启动成功后在浏览器里面输入http://localhost:5000/ 就显示 Hello I am Home! 输入http://localhost:5000/about 就显示 Hello I am About如上就是我们实现了最简单的一个mvc。看到这里可能还是很多人一头雾水那asp.net mvc里面是怎么一回事呀。 aspnet mvc运行初步解析 想知道aspnet mvc的模型是如何工作起来的最简单有效的办法就是去看它的源码参考源码https://github.com/aspnet/Mvc 程序的一个顺序如下 先添加所有mvc运行需要依赖的东西到servicecollection里面去。包括Controller、Views等。MvcServiceCollectionExtensions.cs添加路由支持然后根据路由实现的中间件来驱动控制器的动作。MvcApplicationBuilderExtensions.cs 在添加路由支持的源码里面我们可以看到有一句代码 var routes new RouteBuilder(app)
{DefaultHandler app.ApplicationServices.GetRequiredServiceMvcRouteHandler(),
}; 从这个代码我们不难看到路由的驱动入口就是 MvcRouteHandler,在这个类里面调用方法public Task RouteAsync(RouteContext context)这个方法主要是根据路由提供的数据来选择是要执行哪个控制器和控制器里面的方法。具体的实现可以参考ControllerActionInvoker.cs 整个mvc运行起来的大概原理也就是这样感觉好像也没有特别的复杂。至于这个mvc框架里面的依赖是如何注入如何在调用到时取出来就不属于本文的范围。然后对路由内部的实现有兴趣的可以参考源码https://github.com/aspnet/Routing 由于每一个人对知识的掌握范围的不同可能单纯阅读代码是无法明白是什么意思那么可以把源码下载下来然后在我说到的这几个方法里面加断点看看每一个变量是怎么样的可能会更好的辅助理解。更仔细的内容我将会在今后的文章里面进行介绍。本文结束。 相关文章 ASP.NET Core 1.0 入门——了解一个空项目ASP.NET Core 1.0 部署 HTTPS .NET Framework 4.5.1.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介云服务器下ASP.NET Core 1.0环境搭建包含mono与coreclr使用VS Code开发ASP.NET Core 应用程序dotnet run是如何启动asp.net core站点的ASP.NET Core提供模块化Middleware组件“dotnet restore和dotnet run都做了些什么探秘 dotnet run 如何运行 .NET Core 应用程序.NET Portability Analyzer 已开源ASP.NET Core的配置1读取配置信息ASP.NET Core的配置2配置模型详解.NET Core 1.0 RC2 历险之旅使用VS Code开发 调试.NET Core 应用程序让我们Core在一起ASP.NET Core .NET Core.NET Core VS Code 环境配置官方博客明确了 .NET Core RC2/RTM 时间表.NET Core全新的配置管理[共9篇]利用记事本创建一个ASP.NET Core RC2 MVC应用微软.NET 正式劈腿成功横跨所有平台.NET Core 1.0 CentOS7 尝试解读发布.NET Core RC2 and .NET Core SDK Preview 1[.NET Core].NET Core R2安装及示例教程ASP.NET Core 开发-中间件(Middleware)结合Jexus Kestrel 部署 asp.net core 生产环境通过Jexus 部署 dotnetcore版本MusicStore 示例程序ASP.NET Core 中文文档 第一章 入门用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API用 Visual Studio 发布一个 Azure 云 Web 应用程序ASP.NET Core MVC 与 Visual Studio 入门第二章指南4.2添加 ControllerDotNet Core 介绍asp.net core 中间件详解及项目实战教你实践ASP.NET Core Authorization免看文档教程asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存asp.net core 中间件详解及项目实战第二章 指南4.3添加 View 原文地址http://www.cnblogs.com/caipeiyu/p/5575158.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注