asp.net-core-mvcasp.net-core-mvc入门


备注

本节概述了asp.net-core-mvc是什么,以及开发人员为什么要使用它。

它还应该提到asp.net-core-mvc中的任何大型主题,并链接到相关主题。由于asp.net-core-mvc的文档是新的,您可能需要创建这些相关主题的初始版本。

添加MVC中间件

如果您创建了一个空项目,或者您仍未在应用程序中配置mvc,则可以添加依赖项:

"Microsoft.AspNetCore.Mvc": "1.0.1"

"dependencies" 下的project.json 文件。

并在Startup类中注册MVC中间件:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddMvc();
}
 

请注意,我们有services.AddMvc()services.AddMvcCore() 。如果你是从asp.net core 开始,或者你想要它的方式,你应该与services.AddMvc() 保持一致。但是,如果您需要高级体验,可以从最小的MVC管道入手,添加功能以使用services.AddMvcCore() 获得自定义框架。有关AddMvcCore 更多信息,请参阅此讨论

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvcCore()
        .AddAuthorization()
        .AddJsonFormatters(j => j.Formatting = Formatting.Indented);
}
 

现在您可以告诉应用程序构建器使用mvc:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ...
    app.UseMvc();
}
 

或使用默认路由:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});
 

依赖注入基础知识

几乎任何控制器都需要一些外部依赖项才能工作。这是一种配置依赖项对象(或其工厂)并将其传递给控制器​​的方法。这样做有助于维持关注点分离 ,保持代码清晰可测。

比如说,我们有一个接口及其实现,需要在其构造函数中使用config中的一些值:

public interface ISomeDependency
{
    async Task<IEnumerable<string>> GetItemsAsync(string key);
}

public class SomeDependency : ISomeDependency
{
    public SomeDependency(string connectionString)
    {
        ...
    }
    ...
}
 

它用在某些控制器类中:

public class SomeController : Controller
{
    private reanonly ISomeDependency dependency;

    public SomeController(ISomeDependency dependency)
    {
        ...
        this.dependency = dependency;
    }

    ...

    public async Task<IEnumerable<string>> Get(string key) =>
        await dependency.GetItemsAsync(key);
}
 

可以在控制器构造函数中调用此依赖项,在Startup.ConfigureServices 方法中调用services.AddTransient

public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder().
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        ...
        Configuration = builder.Build();
    }

    public IConfigurationRoot Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddTransient(serviceProvider =>
            new MyDependency(Configuration["Data:ConnectionString"]));
    }

    ...
}
 

这里Data:ConnectionStringappsettings.json 文件中设置的路径:

{
  ...
  },
  "Data": {
    "ConnectionString": "some connection string"
  }
}
 

终身管理

为了管理注入对象的生命周期,以及AddTransient ,还存在另外两个选项: AddSingletonAddScoped 。最后一个意味着对象的生命周期限定为HTTP请求。

安装或设置

安装Visual Studio

如果未安装Visual Studio,可以在此处下载免费的Visual Studio Community Edition 。如果已安装,则可以继续执行下一步。

创建ASP.NET核心MVC应用程序。

  1. 打开Visual Studio。
  2. 选择文件>新建项目。
  3. 在左侧的“模板”部分中,使用您选择的语言选择Web
  4. 在对话框中选择首选项目类型
  5. 可选:选择要定位的.NET Framework
  6. 为项目命名并指明是否要为项目创建解决方案。
  7. 单击“确定”以创建项目。

在此处输入图像描述

您将看到另一个对话框,用于选择要用于项目的模板:

在此处输入图像描述

每个描述都是不言自明的。对于第一个项目, 选择Web应用程序 ,它将包含所有默认配置,身份验证和一些现有内容。

由于这是一个介绍应用程序,并且不需要任何安全性或身份验证,因此您可以在对话框的右侧将身份验证选项更改为“无身份验证 ”, 然后单击“确定”以创建项目

然后,您应该在Solution Explorer中看到新项目:

在此处输入图像描述

按F5键运行应用程序并开始调试会话,该会话将在默认浏览器中启动应用程序:

在此处输入图像描述

您现在可以看到您的项目已在本地启动并运行,并已准备好作为构建应用程序的起点。

PS:使用asp.net-core文档中的asp.net-core主题入门

版本

官方路线图@ Github

通告发布日期
RC1 * 1.0.0-RC1 2015年11月1日
RC2 * 1.0.0-RC2 2016年5月16日
1.0.0 1.0.0 2016年6月27日
1.0.1 1.0.1 2016年9月13日
1.0.1 1.0.1 2016年9月13日
1.1 1.1.0 2016年第四季度/ 2017年第一季度
1.2 1.2.0 2017年第一季度/ 2017年第二季

*参考年度季度(Q1,Q2,Q3,Q4)是基于日历的