asp.net core mvc简介
MVC
通常而言,我们使用.NET Core MVC 构建网页应用与 API,MVC是使用模型-视图-控制器(Model-View-Controller)设计模式。
创建项目
使用如下命令创建一个名称为demo的mvc应用程序,并还原相关依赖文件。
dotnet new mvc -n demo dotnet restore
创建的应用程序包含如下主要的文件:
Controllers:控制器文件夹 Views:视图文件夹 wwwroot:静态文件文件夹,包括css,js,img等 Program.cs:应用程序入口文件,包括Main函数,用来配置以及执行应用程序 Startup.cs:启动文件,用来存放应用程序启动以及配置代码 demo.csproj:应用程序配置文件 其他文件:主要是配置前端压缩及获取类库的文件
Startup
ASP.NET Core 应用程序需要一个Startup类作为启动程序,在Startup类的构造函数中,可以使用一些依赖注入中的服务,例如可以使用IHostingEnvironment来设置配置数据源,ILoggerFactory类设置日志记录的服务提供商。
Startup类中必须包含Configure方法以及一个可选的ConfigureServices方法,这些方法都会在程序启动时执行,其中ConfigureServices会在Configure方法之前执行。常见的Startup文件内容如下:
public class Startup { public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); } public IConfigurationRoot Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } }
Model
MVC 应用中的Model包含了视图所使用的数据信息,控制器将创建模型并发送到视图中,视图利用模型数据进行展示。常用的视图使用特别设计的视图模型(ViewModel)类型来进行数据展示。例如,一个简单的模型示例
public class HeroVM { public int ID { get; set; } public string Name { get; set; } public string Type { get; set; } }
Controller
控制器是承载用户交互、模型运转、并最终选择视图进行渲染的组件。控制器处理并对用户输入和交互做出响应。在 MVC 模式,控制器是最初的入口,负责选择同哪一个模型类型协作和选择哪一个视图用来呈现。
控制器中的代码应该尽量保持简单与整洁,复杂的业务逻辑应该抽象到其他的代码层次结构中进行处理。
using Microsoft.AspNetCore.Mvc; using Demo.Models; namespace Demo.Controllers { public class HomeController : Controller { public IActionResult Index() { List<HeroVM> items = new List<HeroVM>(); HeroVM item = new HeroVM() { ID = 1, Name = "demo1", Type = "animal" }; items.Add(item); return View(items); } } }
View
View负责在用户界面呈现内容。Asp.net Core使用 Razor 视图引擎在 HTML 标记中嵌入 .NET 代码。视图中应仅包含少量的逻辑,而这些逻辑应该是与呈现内容相关的。针对比较复杂的视图模型,可以考虑视图嵌套以及视图组件。
以后使用单页面程序来进行开发,因此视图只进行简单的说明。
@model IEnumerable<Demo.Models.HeroVM> <h3>some demos</h3> <ul> @foreach (var p in Model) { <li>@($"{p.Name} {p.Type}")</li> } </ul>
- ASP.NET 5简介
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
- [Asp.net]缓存简介
- asp.net core mvc View Component 应用
- Asp.net网站管理工具使用简介(转)
- ASP.NET MVC 入门1、简介
- ASP.NET MVC 入门1、简介
- JSP简介以及常见动态网站开发技术(Asp.net、Php、Jsp)
- asp.net core mvc实现文件上传实例
- AjaxPro在ASP.NET中的应用简介
- asp.net_ajax:数据传输方式简介
- ASP.NET Core MVC 配置全局路由前缀
- ASP.NET MVC 入门1、简介
- ASP.NET 2.0中的登陆控件简介(3)
- ASP.NET 网站管理工具使用简介【转】
- ASP.NET CORE MVC 实现减号分隔(Kebab case)样式的 URL
- ASP.NET MVC学习---(一)ORM框架,EF实体数据模型简介
- ASP.net MVC简介及Razor语法
- 解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介
- ASP.NET Core 入门教程 6、ASP.NET Core MVC 视图布局入门