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 core mvc简介的更多相关文章

  1. 解决ASP.NET Core Mvc文件上传限制问题

    一.简介 在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢? 二.设置上传 ...

  2. 创建ASP.NET Core MVC应用程序(6)-添加验证

    创建ASP.NET Core MVC应用程序(6)-添加验证 DRY原则 DRY("Don't Repeat Yourself")是MVC的设计原则之一.ASP.NET MVC鼓励 ...

  3. 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段

    创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...

  4. ASP.NET Core MVC Tag Helpers 介绍

    简介 Tag Helpers 提供了在视图中更改和增强现有HTML元素的功能.将它们添加到视图中,会经过Razor模板引擎处理并创建一个HTML,之后再返回给浏览器.有一些Tag Helpers,其实 ...

  5. ASP.NET Core MVC – Caching Tag Helpers

    简介 缓存可以大大提高应用程序加载时间和响应速度.我们可以使用缓存Tag Helpers缓存不会频繁更改的HTML内容. 在上一篇文章中,我们谈到了Tag Helpers,演示Tag Helpers能 ...

  6. ASP.NET Core MVC – Form Tag Helpers

    ASP.NET Core Tag Helpers系列目录 ASP.NET Core MVC Tag Helpers 介绍 ASP.NET Core MVC – Caching Tag Helpers ...

  7. asp.net core MVC 全局过滤器之ExceptionFilter异常过滤器(一)

    本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter异常过滤器(一) asp.net cor ...

  8. asp.net core MVC 过滤器之ActionFilter过滤器(二)

    本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter过滤器(一) asp.net core ...

  9. ASP.NET Core MVC – Tag Helper 组件

    ASP.NET Core Tag Helpers系列目录,这是第五篇,共五篇: ASP.NET Core MVC – Tag Helpers 介绍 ASP.NET Core MVC – Caching ...

随机推荐

  1. SpringMVC方法接收参数可以为空、默认值设置

  2. FileHelpers 用法 z

    用FileHelplers导出csv数据: [DelimitedRecord(",")] [IgnoreEmptyLines()] [ConditionalRecord(Recor ...

  3. 再学UML-Bug管理系统UML2.0建模实例(一)

    1.项目概述       随着软件项目规模和复杂性的增大,有效跟踪和管理项目中存在的缺陷Bug变得越来越重要.每一个软件企业都需要妥善处理软件中的缺陷,这将直接关系到软件过程质量与软件产品质量,但并非 ...

  4. May 20th 2017 Week 20th Saturday

    The true nobility is in being superior to your previous self. 真正的高贵在于超越过去的自己. Every night before I w ...

  5. CRUD全栈式编程架构之服务层的设计

    服务层代码 首先我先放出2个主要类的代码再分别讲解 接口 using System; using System.Collections.Generic; using System.Linq; usin ...

  6. python:递归函数

    1,初识递归函数 1)什么是递归函数? 在函数中自己调用自己叫做递归函数 递归函数超过一定程度会报错.---RecursionError: maximum recursion dep th excee ...

  7. 3676: [Apio2014]回文串

    3676: [Apio2014]回文串 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 1740 Solved: 744 [Submit][Status ...

  8. c#写入配置文件(text)

    1.获取当前时间 System.DateTime currentTime = new System.DateTime(); currentTime = System.DateTime.Now; 写入配 ...

  9. reactJs 基础

    react不是一个完整的mvc,mvvm框架. react跟web components 不冲突  背景原理:基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,每当数据变化时,React ...

  10. CSS 中定位方式有几种,说明他们的意义

    1.static  默认定位方式 显示为没有设置定位时的位置 2.fixed(固定定位)  他所相对固定的对象是可视窗口,与其他无关.以浏览器窗口作为参考进行定位 3.relative(相对定位) 元 ...