【ASP.NETCore】-搭建MVC框架
1、使⽤最新版本的VS2017,并安装.NET Core2.0中相关开发⼯具
2、打开VS2017,点击⽂件-新建-项⽬,选择.NET Core中的ASP.NET Core Web 应⽤程序
3、由于我们是从零开始搭建MVC框架,因此我们选择创建⼀个空模板
4、创建完后,我们可以看到初始⽂件⾥⾯有这么⼏个⽂件
内部⽂件简介:
Properties&launchSettings.json 是⼀个启动配置⽂件,其⽤于应⽤的启动准备⼯作,包括环境变量,开发端⼝等。
wwwroot是⼀个⽤于存放静态内容的⽂件夹(例如存放css、js、图⽚等⽂件)。
我们可以通过依赖项安装各种依赖(如NuGet、等)。
⾄于Program.cs和Startup.cs等下我们再讲
5、编写Program.cs
public class Program
{
public static void Main(string[] Args)
{
BuildWebHost(Args).Run();
}//void Main(string[] Args)
public static IWebHost BuildWebHost(string[] Args)
{
return WebHost.CreateDefaultBuilder(Args).UseStartup<Startup>().Build();
}//IWebHost BuildWebHost(string[] Args)
}//class Program
ASP.NET Core是通过⼀个控制台应⽤来创建⼀个Web应⽤,其中Program类是项⽬的启动项,其会为我们创建并初始化Web应⽤,并通过Startup类中的ConfigureServices和Configure⽅法,完成依赖注⼊和中间件管道的搭建。
备注:1、请切勿将WebHost.CreateDefaultBuilder(Args).UseStartup().Build()⽅法直接写到Main⽅法内,否则将⽆法使⽤ADO.NET Entity Framework中的迁移指令;
6、初步编写Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection ServiceCollection)
{
}//void ConfigureServices(IServiceCollection ServiceCollection)
public void Configure(IApplicationBuilder ApplicationBuilder, IHostingEnvironment HostingEnvironment)
{
}//void Configure(IApplicationBuilder ApplicationBuilder, IHostingEnvironment HostingEnvironment)
}//class Startup
Startup类是ASP.NET Core中初始化时最重要的设置类,我们可以在其ConfigureServices⽅法中注册所需的Service以此完成依赖注⼊,同时可以在Configure中注册所需的中间件以此完成管道的搭建。
备注:1、Configure的⽅法参数中必需含有IApplicationBuilder接⼝,⽽⾄于其他的接⼝或Service必须在ConfigureServices⽅法中注册后才能添加;2、ASP.NET Core默认会为我们注册⼀些Service,例如IHostingEnvironment、ILoggerFactory等;
7、创建Controllers、Models、Views
8、在Views⽂件夹中添加_Layout.cshtml
<!DOCTYPE html>
<html lang="zh-CN">
<head>
</head>
<body>
<div>
web布局框架@RenderBody()
</div>
</body>
</html>
选择Views⽂件夹,右键-添加-新建项,选择MVC视图页,添加_Layout.cshtml⽂件,该⽂件将被作为⼀个母版页。当然我们也可以在其中添加其他相应的标签。
其中RenderBody的⽅法会渲染其他⼦Views中的内容。
备注:1、在布局页⾯也有节的概念,如果需要使⽤,则需使⽤RenderSection⽅法;
9、在Views⽂件夹中添加_ViewStart.cshtml
@{
Layout = "~/Views/_Layout.cshtml";
}
选择Views⽂件夹,右键-添加-新建项,选择MVC视图页,添加_ViewStart.cshtml⽂件。该⽂件必需添加在Views⽬录下,且必需为_ViewStart.cshtml,这是被微软的MVC 框架中写死的(实际上也可以修改,只是⽐较⿇烦)。
_ViewStart.cshtml是MVC框架中View的启动⽂件,这是MVC框架中必需要有的,我们可以在这⾥指定母版页_Layout.cshtml的路径。
10、在Views⽂件夹中添加_ViewImports.cshtml
@using SinDynasty
@using SinDynasty.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
选择Views⽂件夹,右键-添加-新建项,选择MVC视图页,添加_ViewImports.cshtml⽂件。由于我们在View中使⽤的是Razor语法,在使⽤Razor语法时,我们就可能会引⽤⼀些C#代码,这时我们就需要声明这些C#代码中所引⽤到的命名空间、类。为了⽅便,我们可以在_ViewImports.cshtml⽂件中对某些命名空间进⾏引⽤,这样我们就不必对每个View都引⽤⼀遍相同的命名空间了。
11、在Controllers⽂件夹下创建HomeController.cs
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}//IActionResult Index()
}//class HomeController : Controller
选择Controllers⽂件夹,右键-添加-新建项,选择MVC控制器类,添加HomeController.cs。
所有的Controller都应该以Controller结尾,且必须都继承Controller。其中View⽅法将返回⼀个ViewResult,MVC将通过这个ViewResult来显⽰相应的View。View⽅法有多个重载,在⽰例⾥使⽤了⽆参数的重载,其将会显⽰View/Controller名称的简写/⽅法名.cshtml。
备注:1、所有的Controller都必须为public
12、在Models⽂件夹下创建HomeModel.cs
public class HomeModel
{
}//class HomeModel
选择Models⽂件夹,右键-添加-新建项,选择类,添加HomeModel.cs。
备注:1、在这个简单⽰例中,并不需要Model,在这⼉写只是说明如何去创建Models;2、所有的Mod
el都必须为public,否则将⽆法在View中引⽤;
13、在Views⽬录下创建HomeController中的Index视图。
<h1>
Hello,World
</h1>
选择Views⽂件夹,右键-添加-新建⽂件夹,从⽽创建出⼀个Home⽂件夹,然后选择Home⽂件夹,右键-添加-新建项,选择MVC视图页,添加Index.cshtml⽂件。
14、注册MVC服务
public void ConfigureServices(IServiceCollection ServiceCollection)
{
ServiceCollection.AddMvc();
}//void ConfigureServices(IServiceCollection ServiceCollection)
在Startup类中的ConfigureServices⽅法中,调⽤MvcServiceCollectionExtensions类⾥的AddMvc⽅法(AddMvc⽅法是IServiceCollection的⼀个拓展⽅法,具体的等以后将ASP.NET Core中的依赖注⼊时再讲)。
15、注册MVC中间件,并配置路由规则
public void Configure(IApplicationBuilder ApplicationBuilder, IHostingEnvironment HostingEnvironment)
{
ApplicationBuilder.UseMvc((RouteBuilder)=> { RouteBuilder.MapRoute("SinDynasty", "{Controller}/{Action}/{Parameter}", new { @Controller = "Home", @Action = "Index", @Parameter = String.Empty }); }); }//void Configure(IApplicationBuilder ApplicationBuilder, IHostingEnvironment HostingEnvironment)
注册MVC中间件时,我们调⽤的是MvcApplicationBuilderExtensions类中的IApplicationBuilder的拓展⽅法UseMvc⽅法。由于我们创建的是⼀个完整的Web应⽤,⽽不是⼀个WebAPI,因此我们还需要配置相应的路由规则。
在UseMvc⽅法中有⼀个可以带有Action的重载⽅法,我们可以在该Action上进⾏路由规则的配置。
Action在这⾥我们使⽤⼀个Lambda表达式(RouteBuilder)=>{ }来表⽰。RouteBuilder表⽰的是⼀个IRouteBuilder接⼝。
配置路由规则,我们可以调⽤MapRouteRouteBuilderExtensions类中的IRouteBuilder的拓展⽅法MapRoute来进⾏。
MapRoute也有多个重载,在这⾥我所⽤的重载的第⼀个参数表⽰的是路由规则的名称,第⼆个参数表⽰的是路由规则,第三个参数表⽰的是初始默认的路由规则。
参数1:由于我们可以有多个路由规则,因此我们需要对这些路由规则加以命名已做区分;
参数2:表⽰的是⼀个路由规则,在这⾥我使⽤的规则是“Controller名称的简写/⽅法名/路由参数”;
参数3:表⽰的是初始默认的路由,在这⾥我设置的初始路由就是"Home/Index/",在这⾥使⽤了⼀个匿名类来表⽰;
16、这样我们就创建并搭建完毕了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论