サーチ…


備考

このセクションでは、asp.net-core-mvcの概要と、なぜ開発者がそれを使いたいのかを概説します。

また、asp.net-core-mvc内の大きなテーマについても言及し、関連トピックにリンクする必要があります。 asp.net-core-mvcのドキュメントは新しくなっているので、それらの関連トピックの初期バージョンを作成する必要があります。

インストールまたはセットアップ

Visual Studioのインストール

Visual Studioがインストールされていない場合は、 ここで無料のVisual Studio Community Editionをダウンロードできます 。インストール済みの場合は、次の手順に進むことができます。

ASP.NET Core MVCアプリケーションの作成

  1. Visual Studioを開きます。
  2. ファイル/新規プロジェクトを選択します。
  3. 左側の[テンプレート]セクションで希望する言語でWebを選択します。
  4. ダイアログ内で優先プロジェクトタイプを選択します。
  5. オプション:ターゲットにする.NET Frameworkを選択します
  6. プロジェクトに名前を付け、プロジェクトのソリューションを作成するかどうかを指定します。
  7. [OK]クリックしてプロジェクトを作成します。

ここに画像の説明を入力

プロジェクトに使用するテンプレートを選択する別のダイアログが表示されます。

ここに画像の説明を入力

各説明は自明です。この最初のプロジェクトでは、 Webアプリケーションを選択します 。これには、すべてのデフォルト設定、認証、および既存のコンテンツが含まれます。

これは導入アプリケーションであり、セキュリティや認証を必要としないため、ダイアログボックスの右側で認証オプションを[認証なし]に変更し、 [OK ]をクリックしてプロジェクトを作成できます

ソリューションエクスプローラで新しいプロジェクトが表示されます。

ここに画像の説明を入力

F5キーを押してアプリケーションを実行し 、デバッグセッションを開始すると、デフォルトのブラウザでアプリケーションが起動します。

ここに画像の説明を入力

これで、プロジェクトがローカルに起動して実行されていることがわかり、アプリケーションを構築する準備が整いました。

PS:Used asp.net-core Documentationからasp.net-coreトピック使い始める

MVCミドルウェアを追加

空のプロジェクトを作成した場合、またはまだアプリケーションにmvcが設定されていない場合は、依存関係を追加できます。

"Microsoft.AspNetCore.Mvc": "1.0.1"

project.jsonファイルの"dependencies"ます。

StartupクラスにMVCミドルウェアを登録します:

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

Service.AddMvc services.AddMvc()services.AddMvcCore()両方があることに注意してください。あなたがasp.net coreで始まっている場合、またはそれをそのまま使用したい場合は、 services.AddMvc() 。しかし、高度な経験が必要な場合は、最小限のMVCパイプラインから始め、 services.AddMvcCore()を使用してカスタマイズされたフレームワークを取得する機能を追加することができ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メソッド内で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:ConnectionStringは、 appsettings.jsonファイルの設定へのパスです。

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

生涯管理

注入されたオブジェクトの寿命を管理するために、一緒にAddTransient別の2つのオプションが存在する: AddSingletonAddScoped 。最後の1つは、オブジェクトのライフタイムがHTTP要求にスコープされていることを意味します。

バージョン

公式ロードマップ@ Github

バージョンお知らせ発売日
RC1 * 1.0.0-rc1 2015-11-01
RC2 * 1.0.0-rc2 2016年5月16日
1.0.0 1.0.0 2016年6月27日
1.0.1 1.0.1 2016-09-13
1.0.1 1.0.1 2016-09-13
1.1 1.1.0 Q4 2016 / Q1 2017
1.2 1.2.0 Q1 2017 / Q2 2017

*年次四半期(Q1、Q2、Q3、Q4)への参照はカレンダーベースです



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow