Szukaj…


Uwagi

Ta sekcja zawiera przegląd tego, czym jest asp.net-core-mvc i dlaczego deweloper może chcieć z niego korzystać.

Powinien również wymieniać wszelkie duże tematy w obrębie asp.net-core-mvc i link do powiązanych tematów. Ponieważ dokumentacja dla asp.net-core-mvc jest nowa, może być konieczne utworzenie początkowych wersji tych pokrewnych tematów.

Instalacja lub konfiguracja

Instalowanie programu Visual Studio

Jeśli nie masz zainstalowanego programu Visual Studio, możesz pobrać bezpłatną wersję Visual Studio Community Edition tutaj . Jeśli masz już zainstalowany, możesz przejść do następnego kroku.

Tworzenie aplikacji ASP.NET Core MVC.

  1. Otwórz Visual Studio.
  2. Wybierz Plik> Nowy projekt.
  3. Wybierz Sieć pod wybranym językiem w sekcji Szablony po lewej stronie.
  4. Wybierz preferowany typ projektu w oknie dialogowym.
  5. Opcjonalnie: wybierz .NET Framework, na który chcesz kierować reklamy
  6. Nazwij swój projekt i wskaż, czy chcesz utworzyć Rozwiązanie dla projektu.
  7. Kliknij OK, aby utworzyć projekt.

wprowadź opis zdjęcia tutaj

Zostanie wyświetlone inne okno dialogowe umożliwiające wybranie szablonu, którego chcesz użyć w projekcie:

wprowadź opis zdjęcia tutaj

Każdy z opisów jest zrozumiały. W przypadku tego pierwszego projektu wybierz opcję Aplikacja internetowa , która będzie zawierać wszystkie domyślne konfiguracje, uwierzytelnianie i niektóre istniejące treści.

Ponieważ jest to aplikacja wprowadzająca i nie wymaga żadnych zabezpieczeń ani uwierzytelniania, możesz zmienić opcję uwierzytelniania na Brak uwierzytelnienia po prawej stronie okna dialogowego i kliknąć OK, aby utworzyć projekt .

Powinieneś wtedy zobaczyć nowy projekt w Eksploratorze rozwiązań:

wprowadź opis zdjęcia tutaj

Naciśnij klawisz F5, aby uruchomić aplikację i rozpocząć sesję debugowania, która uruchomi aplikację w domyślnej przeglądarce:

wprowadź opis zdjęcia tutaj

Teraz możesz zobaczyć, że Twój projekt działa lokalnie i jest gotowy jako punkt wyjścia do zbudowania aplikacji.

PS: Używane Wprowadzenie do tematu asp.net-core z dokumentacji asp.net-core .

Dodaj oprogramowanie pośrednie MVC

Jeśli utworzyłeś pusty projekt lub nadal nie masz skonfigurowanego mvc w swojej aplikacji, możesz dodać zależność:

"Microsoft.AspNetCore.Mvc": "1.0.1"

Do pliku project.json w "dependencies" .

I zarejestruj oprogramowanie pośrednie MVC w swojej klasie Autostart:

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

Zauważ, że mamy zarówno services.AddMvc() i services.AddMvcCore() . Jeśli zaczynasz od asp.net core lub chcesz, żeby tak było, powinieneś korzystać z services.AddMvc() . Ale jeśli potrzebujesz zaawansowanego doświadczenia, możesz zacząć od minimalnego potoku MVC i dodać funkcje, aby uzyskać niestandardową strukturę za pomocą services.AddMvcCore() . Zobacz tę dyskusję, aby uzyskać więcej informacji o AddMvcCore

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

Teraz możesz powiedzieć konstruktorowi aplikacji, aby używał mvc:

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

lub z domyślnym routingiem:

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

Podstawy wstrzykiwania zależności

Prawie każdy kontroler potrzebuje pewnych zewnętrznych zależności do działania. Oto sposób skonfigurowania obiektu zależności (lub jego fabryki) i przekazania go do kontrolera. Takie postępowanie pomoże utrzymać separację problemów , zachować przejrzystość kodu i możliwość testowania.

Powiedzmy, że mamy interfejs i jego implementację, która potrzebuje pewnych wartości z config w swoim konstruktorze:

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

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

Jest używany w niektórych klasach kontrolerów:

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);
}

Tę zależność można wstrzyknąć do konstruktora kontrolera wywołującego services.AddTransient Startup.ConfigureServices wewnątrz metody Startup.ConfigureServices :

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"]));
    }

    ...
}

Tutaj Data:ConnectionString to ścieżka do ustawienia w pliku appsettings.json :

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

Zarządzanie przez całe życie

Aby zarządzać czasem życia wstrzykiwanego obiektu, wraz z AddTransient istnieją jeszcze dwie opcje: AddSingleton i AddScoped . Ostatni oznacza, że czas życia obiektu jest ograniczony do żądania HTTP.

Wersje

Oficjalna mapa drogowa @ Github

Wersja Ogłoszenia Data wydania
RC1 * 1.0.0-rc1 01.11.2015
RC2 * 1.0.0-rc2 2016-05-16
1.0.0 1.0.0 27.06.2016
1.0.1 1.0.1 13.09.2016
1.0.1 1.0.1 13.09.2016
1.1 1.1.0 IV kwartał 2016 / I kwartał 2017 r
1.2 1.2.0 Q1 2017 / Q2 2017

* Odniesienia do kwartałów rocznych (I kwartał, II kwartał, III kwartał, IV kwartał) są oparte na kalendarzu



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow