ASP.NET mvc 'den ASP.NET Core mvc 'ye geçirme

bu makalede, ASP.NET mvc projesini ASP.NET Core mvc'ye geçirmeye nasıl başlayayapılacağı gösterilmektedir. sürecinde, ASP.NET MVC 'den ilgili değişiklikleri vurgular.

ASP.NET MVC 'den geçiş çok adımlı bir işlemdir. Bu makalede şunları ele alınmaktadır:

  • İlk kurulum.
  • Temel denetleyiciler ve görünümler.
  • Statik içerik.
  • İstemci tarafı bağımlılıkları.

yapılandırma ve kodu geçirmek için Identity bkz. yapılandırmayı ASP.NET Core ve geçiş kimlik doğrulaması ve Identity ASP.NET Core geçirme.

Önkoşullar

başlatıcı ASP.NET MVC projesi oluşturma

geçirilecek Visual Studio ASP.NET MVC projesi örneği oluşturun:

  1. dosya menüsünden yeni > Project' yi seçin.
  2. ASP.NET Web uygulaması (.NET Framework) öğesini seçin ve ardından ileri' yi seçin.
  3. ad alanı, bir sonraki adımda oluşturulan ASP.NET Core projesi ile eşleşen proje WebApp1 olarak adlandırın. Oluştur’u seçin.
  4. MVC' yi ve ardından Oluştur' u seçin.

ASP.NET Core projesi oluşturma

geçirilecek yeni bir ASP.NET Core projesi ile yeni bir çözüm oluşturun:

  1. İkinci bir Visual Studio örneğini başlatın.
  2. dosya menüsünden yeni > Project' yi seçin.
  3. ASP.NET Core Web uygulaması ' nı seçin ve ardından ileri' yi seçin.
  4. Yeni projenizi yapılandırın iletişim kutusunda projeyi WebApp1 olarak adlandırın.
  5. Aynı proje adını kullanmak için konumu önceki projeden farklı bir dizine ayarlayın. Aynı ad alanının kullanılması, kodu iki proje arasında kopyalamayı kolaylaştırır. Oluştur’u seçin.
  6. yeni bir ASP.NET Core Web uygulaması oluştur iletişim kutusunda, .net Core ve ASP.NET Core 3,1 ' un seçili olduğunu doğrulayın. Web uygulaması (Model-View-Controller) proje şablonunu seçin ve Oluştur' u seçin.

ASP.NET Core sitesini MVC kullanacak şekilde yapılandırma

ASP.NET Core 3,0 ve sonraki projelerde .NET Framework artık desteklenen bir hedef çerçeve değildir. Projenizin .NET Core 'ı hedeflemesi gerekir. MVC 'yi içeren ASP.NET Core paylaşılan framework, .net Core çalışma zamanı yüklemesinin bir parçasıdır. Proje dosyasında SDK kullanılırken paylaşılan çerçeveye otomatik olarak başvurulur Microsoft.NET.Sdk.Web :

<Project Sdk="Microsoft.NET.Sdk.Web">

Daha fazla bilgi için bkz. Framework başvurusu.

ASP.NET Core, Startup sınıfı:

  • Global. asax öğesini değiştirir.
  • Tüm uygulama başlangıç görevlerini işler.

Daha fazla bilgi için bkz. ASP.NET Core 'de uygulama başlatma.

ASP.NET Core projesinde, Startup. cs dosyasını açın:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}

ASP.NET Core uygulamalar, ara yazılım ile framework özelliklerini kabul etmelidir. Şablon tarafından oluşturulan önceki kod, aşağıdaki hizmetleri ve ara yazılımı ekler:

bu mevcut yapılandırma, örnek ASP.NET MVC projesini geçirmek için gerekenleri içerir. ASP.NET Core ara yazılım seçenekleri hakkında daha fazla bilgi için bkz ASP.NET Core 'de uygulama başlatma ..

Denetleyicileri ve görünümleri geçirme

ASP.NET Core projesinde, yeni boş bir denetleyici sınıfı ve görünüm sınıfı, geçiş için herhangi bir ASP.NET MVC projesindeki denetleyici ve görünüm sınıflarıyla aynı adları kullanarak yer tutucu olarak sunulacak şekilde eklenir.

ASP.NET Core WebApp1 projesi zaten minimal bir örnek denetleyici içeriyor ve ASP.NET MVC projesiyle aynı ada sahip bir görünüm içeriyor. bu nedenle bunlar, ASP.NET mvc WebApp1 projesinden geçirilecek ASP.NET MVC denetleyicisi ve görünümleri için yer tutucu olarak görev yapar.

  1. HomeControlleryeni ASP.NET Core yöntemlerini değiştirmek için ASP.NET MVC 'den yöntemleri kopyalayın HomeController . Eylem yöntemlerinin dönüş türünü değiştirmeniz gerekmez. ASP.NET MVC yerleşik şablonun denetleyici eylem yöntemi dönüş türü ActionResult ; ASP.NET Core mvc 'de eylem metotları IActionResult bunun yerine döndürülür. ActionResult uygular IActionResult .
  2. ASP.NET Core projesinde, görünümlere Home / dizine sağ tıklayın, > varolan öğe ekle ' yi seçin.
  3. varolan öğe ekle iletişim kutusunda ASP.NET MVC WebApp1 projesinin Home görünümlerine/ dizinine gidin.
  4. Hakkında. cshtml, Contact. cshtml ve Index. cshtml Razor Görünüm dosyalarını seçin ve ardından Ekle' yi seçerek var olan dosyaları değiştirin.

Daha fazla bilgi için ASP.NET Core MVC 'de denetleyicilerle istekleri işleme ve ASP.NET Core MVC 'deki görünümler bölümlerine bakın.

Her yöntemi test et

Her denetleyici uç noktası test edilebilir, ancak düzen ve stiller belgede daha sonra ele alınmıştır.

  1. ASP.NET Core uygulamasını çalıştırın.
  2. geçerli bağlantı noktası numarasını ASP.NET Core projesinde kullanılan bağlantı noktası numarasıyla değiştirerek, çalışan ASP.NET Core uygulamasındaki tarayıcıdan işlenen görünümleri çağırın. Örneğin, https://localhost:44375/home/about.

Statik içeriği geçirme

ASP.NET MVC 5 ve önceki sürümlerde, statik içerik web projesinin kök dizininden barındırılıyor ve sunucu tarafı dosyalarıyla karıştı. ASP.NET Core, statik dosyalar projenin web kök dizininde saklanır. Varsayılan dizin {Content root}/Wwwroot, ancak değiştirilebilir. Daha fazla bilgi için ASP.NET Core Içindeki statik dosyalarbölümüne bakın.

ASP.NET MVC WebApp1 projesinden statik içeriği ASP.NET Core WebApp1 projesindeki wwwroot dizinine kopyalayın:

  1. ASP.NET Core projesinde, wwwroot dizinine sağ tıklayın, > varolan öğe ekle ' yi seçin.
  2. varolan öğe ekle iletişim kutusunda ASP.NET MVC WebApp1 projesine gidin.
  3. Tercih simgesi. ico dosyasını seçin ve ardından Ekle' yi seçerek var olan dosyayı değiştirin.

Düzen dosyalarını geçirme

ASP.NET MVC proje düzeni dosyalarını ASP.NET Core projesine kopyalayın:

  1. ASP.NET Core projesinde, görünümler dizinine sağ tıklayın, > varolan öğe ekle ' yi seçin.
  2. varolan öğe ekle iletişim kutusunda ASP.NET MVC WebApp1 projesinin görünümler dizinine gidin.
  3. _ViewStart. cshtml dosyasını seçin ve ardından Ekle' yi seçin.

ASP.NET MVC proje paylaşılan düzen dosyalarını ASP.NET Core projesine kopyalayın:

  1. ASP.NET Core projesinde, görünümler/paylaşılan dizine sağ tıklayın, > varolan öğe ekle ' yi seçin.
  2. varolan öğe ekle iletişim kutusunda ASP.NET MVC WebApp1 projesinin görünümler/paylaşılan dizinine gidin.
  3. _Layout. cshtml dosyasını seçin ve ardından Ekle' yi seçerek var olan dosyayı değiştirin.

ASP.NET Core projesinde, _Layout. cshtml dosyasını açın. Aşağıda gösterilen tamamlanan kodla eşleştirmek için aşağıdaki değişiklikleri yapın:

Önyükleme CSS 'sini aşağıdaki tamamlanan kodla eşleşecek şekilde güncelleştirin:

  1. @Styles.Render("~/Content/css") <link> Bootstrap. css ' nin yükleneceği bir öğeyle değiştirin (aşağıya bakın).
  2. Kaldırın @Scripts.Render("~/bundles/modernizr") .

Önyükleme CSS ekleme için tamamlanan değiştirme biçimlendirmesi:

<link rel="stylesheet"
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
    integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">

JQuery ve Bootstrap JavaScript 'ı aşağıdaki tamamlanan kodla eşleşecek şekilde güncelleştirin:

  1. @Scripts.Render("~/bundles/jquery")Bir öğesiyle değiştirin <script> (aşağıya bakın).
  2. @Scripts.Render("~/bundles/bootstrap")Bir öğesiyle değiştirin <script> (aşağıya bakın).

JQuery ve Bootstrap JavaScript ekleme için tamamlanan değiştirme biçimlendirmesi:

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
    integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

Güncelleştirilmiş _Layout. cshtml dosyası aşağıda gösterilmiştir:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    <link rel="stylesheet"
          href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
          crossorigin="anonymous">
</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                    <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                </ul>
            </div>
        </div>
    </div>
    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
        </footer>
    </div>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
            integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    @RenderSection("scripts", required: false)
</body>
</html>

Siteyi tarayıcıda görüntüleyin. Beklenen stillerle işleyicinin yerinde olması gerekir.

Gruplama ve minimumlaştırmayı yapılandırma

ASP.NET Core, WebOptimizer ve diğer benzer kitaplıklar gibi çeşitli açık kaynak modelleme ve minification çözümleriyle uyumludur. ASP.NET Core, yerel bir modelleme ve minification çözümü sağlamaz. Bundling ve minification yapılandırma hakkında bilgi için bkz. Bundling ve Minification.

HTTP 500 hatalarını çözme

Sorunun kaynağı hakkında bilgi içeren bir HTTP 500 hata iletisine neden olan birçok sorun vardır. Örneğin Views/_ViewImports.cshtml dosyası projede mevcut olmayan bir ad alanı içeriyorsa HTTP 500 hatası oluşturulur. Varsayılan olarak ASP.NET Core, uzantısı uygulamasına eklenir ve ortam Geliştirme UseDeveloperExceptionPage IApplicationBuilder olduğunda yürütülür. Bu, aşağıdaki kodda ayrıntılı olarak açıktır:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}

ASP.NET Core özel durumları HTTP 500 hata yanıtlarına dönüştürür. Normalde, sunucuyla ilgili hassas olabilecek bilgilerin açıklanmasına engel olmak için hata ayrıntıları bu yanıtlara dahil değildir. Daha fazla bilgi için bkz. Geliştirici Özel Durum Sayfası.

Sonraki adımlar

Ek kaynaklar

Bu makalede, bir MVC projesini MVC 2.2'ASP.NET ASP.NET Core nasıl başlayacağınız açıklanmıştır. İşlemde, MVC'den farklı olarak değişen birçok şeyi ASP.NET vurgular. MVC'den ASP.NET çok adımlı bir işlemdir. Bu makale şunları kapsar:

  • İlk kurulum
  • Temel denetleyiciler ve görünümler
  • Statik içerik
  • İstemci tarafı bağımlılıkları.

Yapılandırmayı ve kodun nasıl olduğunu Identity görmek için bkz. Yapılandırmayı ASP.NET Core geçir ve Kimlik Doğrulamasını ve Identity ASP.NET Core .

Not

Örneklerde sürüm numaraları güncel değildir, projeleri uygun şekilde güncelleştirin.

MVC projesi ASP.NET oluşturma

Yükseltmeyi göstermek için MVC uygulaması oluşturmak ASP.NET başlayacağız. Ad alanının bir sonraki adımda oluşturulan projeyle eşleşmesi için WebApp1 ASP.NET Core oluşturun.

Visual Studio Yeni Project iletişim kutusu

Yeni Web Uygulaması iletişim kutusu: Yeni Web Uygulaması şablonları ASP.NET MVC proje şablonu seçildi

İsteğe bağlı: Çözümün adını WebApp1 olarak Mvc5 olarak değiştirme. Visual Studio yeni çözüm adını (Mvc5) görüntüler ve bu da bu projeyi bir sonraki projeden daha kolay bir şekilde anlatmayı kolaylaştırır.

ASP.NET Core oluşturma

İki projede ad ASP.NET Core önceki projeyle aynı adla (WebApp1) yeni bir boş web uygulaması oluşturun. Aynı ad alanına sahip olmak, iki proje arasında kod kopyalamayı kolaylaştırır. Aynı adı kullanmak için bu projeyi önceki projeden farklı bir dizinde oluşturun.

Yeni Proje iletişim kutusu

Yeni ASP.NET Web Uygulaması iletişim kutusu: Şablonlar panelinde ASP.NET Core proje şablonu seçildi

  • İsteğe bağlı: Web Uygulaması ASP.NET Core kullanarak yeni bir uygulama oluşturun. Projeyi WebApp1 olarak adlandırarak Bireysel Kullanıcı Hesapları kimlik doğrulaması seçeneğini belirleyin. Bu uygulamayı FullAspNetCore olarak yeniden adlandırabilirsiniz. Bu projenin oluşturulması, dönüştürmede zamandan tasarruf sağlar. Son sonuç şablon tarafından oluşturulan kodda görüntüleme, kod dönüştürme projesine kopyalanamaz veya şablon tarafından oluşturulan projeyle karşılaştırabilirsiniz.

Siteyi MVC'yi kullanmak üzere yapılandırma

  • .NET Core'a hedef Microsoft.AspNetCore.App meta veri paketine varsayılan olarak başvurdu. Bu paket, MVC uygulamaları tarafından yaygın olarak kullanılan paketleri içerir. Hedef .NET Framework, paket başvuruları proje dosyasında tek tek listelenmiş olması gerekir.

Microsoft.AspNetCore.Mvc, ASP.NET Core MVC çerçevesidir. Microsoft.AspNetCore.StaticFiles , statik dosya işleyicisidir. ASP.NET Core uygulamaları, örneğin statik dosyaları sunan ara yazılımı açıkça kabul edin. Daha fazla bilgi için bkz. Statik dosyalar.

  • Startup.cs dosyasını açın ve kodu aşağıdakiyle eş olacak şekilde değiştirebilirsiniz:
public class Startup
{
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection 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)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseStaticFiles();

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

Genişletme UseStaticFiles yöntemi statik dosya işleyicisini ekler. Daha fazla bilgi için bkz. Uygulama Başlatma ve Yönlendirme.

Denetleyici ve görünüm ekleme

Bu bölümde, bir sonraki bölümde geçirilen MVC denetleyicisi ve görünümler için ASP.NET bir denetleyici ve görünüm eklenmiştir.

  • Denetleyiciler dizini ekleyin.

  • Controllers dizinine Home Controller.cs adlı bir Denetleyici Sınıfı ekleyin.

MVC Denetleyici Sınıfı seçiliyken Yeni Öğe Ekle iletişim kutusu

  • Görünümler dizini ekleyin.

  • Bir Views/ Home dizini ekleyin.

  • Home Views/ Razor dizinine Index.cshtml adlı bir Görünüm ekleyin.

MVC Görünüm Sayfası'nın seçili olduğu Yeni Öğe Ekle iletişim kutusu

Proje yapısı aşağıda gösterilmiştir:

Çözüm Gezgini WebApp1'in dosyalarını ve dizinlerini gösteren dosyalar

Views/ Home /Index.cshtml dosyasının içeriğini aşağıdaki işaretlemeyle değiştirin:

<h1>Hello world!</h1>

Uygulamayı çalıştırın.

Web uygulaması Microsoft Edge

Daha fazla bilgi için bkz. Denetleyiciler ve Görünümler.

Aşağıdaki işlevsellik, örnek MVC projesinden ASP.NET projesine ASP.NET Core gerektirir:

  • istemci tarafı içerik (CSS, yazı tipleri ve betikler)

  • denetleyiciler

  • görünümler

  • modeller

  • bundling (bundling)

  • filtreler

  • Oturum açma/oturumu açma Identity (Bu işlem sonraki öğreticide yapılır.)

Denetleyiciler ve görünümler

  • MVC'den gelen yöntemlerin her ASP.NET HomeController yeni 'ye HomeController kopyalayın. MVC ASP.NET de yerleşik şablonun denetleyici eylem yöntemi dönüş türü ActionResult şudur: MVC'de ASP.NET Core yöntemleri bunun yerine IActionResult geri döner. ActionResult , IActionResult bu nedenle eylem yöntemlerinin dönüş türünü değiştirmeye gerek yoktur.

  • ASP.NET MVC projesinden About.cshtml, Contact.cshtml ve Index.cshtml görünüm dosyalarını ASP.NET Core Razor kopyalayın.

Her yöntemi test etmek

Düzen dosyası ve stilleri henüz geçirilmez, bu nedenle işlenmiş görünümler yalnızca görünüm dosyalarında içeriği içerir. ve görünümleri için oluşturulan düzen About Contact dosyası henüz kullanılamıyor.

Geçerli bağlantı noktası numarasını ASP.NET çekirdek projesinde kullanılan bağlantı noktası numarasıyla değiştirerek çalışan ASP.NET tarayıcıdan işlenen görünümleri çağırma. Örneğin: https://localhost:44375/home/about.

Kişi sayfası

Stil ve menü öğelerinin eksik olduğunu unutmayın. Stil bir sonraki bölümde düzeltilecek.

Statik içerik

MVC 5 ASP.NET önceki sürümlerde statik içerik web projesinin kökünden barındırıldı ve sunucu tarafı dosyalarıyla kesişti. Bu ASP.NET Core, statik içerik wwwroot dizininde barındırıldı. MVC uygulamasındaki statik ASP.NET projesinde wwwroot dizinine ASP.NET Core kopyalayın. Bu örnek dönüştürmede:

  • ASP.NET MVC projesinden favicon.ico dosyasını ASP.NET Core projesinde wwwroot dizinine kopyalayın.

MVC ASP.NET, stili için Bootstrap kullanır ve Bootstrap dosyalarını İçerik ve Betik dizinlerine depolar. ASP.NET MVC projesini oluşturan şablon, düzen dosyasında (Views/Shared/_Layout.cshtml) Bootstrap'e başvurur. bootstrap.js ve bootstrap.css dosyaları, ASP.NET MVC projesinde yeni projesinde wwwroot dizinine kopyalanır. Bunun yerine, bu belge sonraki bölümde CDN'leri kullanarak Bootstrap (ve diğer istemci tarafı kitaplıkları) için destek ekler.

Düzen dosyasını geçirme

  • ASP.NET MVC projesinin Views dizininden _ViewStart.cshtml dosyasını ASP.NET Core projesinin Views dizinine kopyalayın. _ViewStart.cshtml dosyası MVC'de ASP.NET Core değişmemiştir.

  • Görünümler/Paylaşılan dizin oluşturun.

  • İsteğe bağlı: FullAspNetCore MVC projesinin Views dizininden _ViewImports.cshtml dosyasını ASP.NET Core projenin Views dizinine kopyalayın. _ViewImports.cshtml dosyasındaki tüm ad alanı bildirimlerini kaldırın. _ViewImports.cshtml dosyası tüm görünüm dosyaları için ad alanları sağlar ve Etiket Yardımcılarını getirir. Etiket Yardımcıları yeni düzen dosyasında kullanılır. _ViewImports.cshtml dosyası, ASP.NET Core.

  • ASP.NET MVC projesinin Views/Shared dizininden _Layout.cshtml dosyasını ASP.NET Core projesinin Views/Shared dizinine kopyalayın.

_Layout.cshtml dosyasını açın ve aşağıdaki değişiklikleri yapın (tamamlanan kod aşağıda gösterilmiştir):

  • öğesini @Styles.Render("~/Content/css") <link> bootstrap.css yüklemek için bir öğesiyle değiştirin (aşağıya bakın).

  • @Scripts.Render("~/bundles/modernizr") kaldırın.

  • Satırı açıklama @Html.Partial("_LoginPartial") satırı yap (satırı ile çevreler). @*...*@ Daha fazla bilgi için bkz. Kimlik Doğrulamayı Geçirme Identity ve ASP.NET Core

  • öğesini @Scripts.Render("~/bundles/jquery") bir <script> öğesiyle değiştirin (aşağıya bakın).

  • öğesini @Scripts.Render("~/bundles/bootstrap") bir <script> öğesiyle değiştirin (aşağıya bakın).

Bootstrap CSS dahil etme için değiştirme işaretlemesi:

<link rel="stylesheet"
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
    integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">

jQuery ve Bootstrap JavaScript içermesi için değiştirme işaretlemesi:

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
    integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

Güncelleştirilmiş _Layout.cshtml dosyası aşağıda gösterilmiştir:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    <link rel="stylesheet"
          href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
          crossorigin="anonymous">
</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                    <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                </ul>
                @*@Html.Partial("_LoginPartial")*@
            </div>
        </div>
    </div>
    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
        </footer>
    </div>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
            integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
            crossorigin="anonymous"></script>
    @RenderSection("scripts", required: false)
</body>
</html>

Siteyi tarayıcıda görüntüleyebilirsiniz. Şimdi beklenen stiller yerinde olacak şekilde doğru şekilde yüklenmeli.

  • İsteğe bağlı: Yeni düzen dosyasını kullanmayı deneyin. FullAspNetCore projesinden düzen dosyasını kopyalayın. Yeni düzen dosyası Etiket Yardımcılarını kullanır ve başka geliştirmeleri vardır.

Gruplama ve minimumlaştırmayı yapılandırma

Gruplama ve minimumlaştırmayı yapılandırma hakkında bilgi için bkz. Gruplama ve Minification.

HTTP 500 hatalarını çözme

Sorunun kaynağı hakkında bilgi içeren http 500 hata iletilerine neden olan birçok sorun vardır. Örneğin Views/_ViewImports.cshtml dosyasında projede mevcut olmayan bir ad alanı varsa HTTP 500 hatası oluşturulur. Varsayılan olarak ASP.NET Core, uzantısı uygulamasına eklenir ve yapılandırma Geliştirme UseDeveloperExceptionPage IApplicationBuilder olduğunda yürütülür. Aşağıdaki kodda bir örnek bakın:

public class Startup
{
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection 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)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseStaticFiles();

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

ASP.NET Core özel durumları HTTP 500 hata yanıtlarına dönüştürür. Normalde, sunucuyla ilgili hassas olabilecek bilgilerin açıklanmasına engel olmak için hata ayrıntıları bu yanıtlara dahil değildir. Daha fazla bilgi için bkz. Geliştirici Özel Durum Sayfası.

Ek kaynaklar

Bu makalede, bir MVC projesini MVC 2.1'ASP.NET e ASP.NET Core nasıl başlayacağınız açıklanmıştır. Bu işlemde, MVC'den gelen birçok değişiklik ASP.NET vurgulanır. MVC'den ASP.NET çok adımlı bir işlemdir. Bu makale şunları kapsar:

  • İlk kurulum
  • Temel denetleyiciler ve görünümler
  • Statik içerik
  • İstemci tarafı bağımlılıkları.

Yapılandırmayı ve kodu geçirmek için bkz. Yapılandırmayı ASP.NET Core'a geçirme ve Kimlik Identity Doğrulamayı Identity ASP.NET Core.

Not

Örneklerde sürüm numaraları güncel değildir, projeleri uygun şekilde güncelleştirin.

MVC projesi ASP.NET oluşturma

Yükseltmeyi göstermek için ilk olarak bir MVC uygulaması ASP.NET oluşturuz. Ad alanının bir sonraki adımda oluşturulan projeyle eşleşmesi için WebApp1 ASP.NET Core oluşturun.

Visual Studio Yeni Project iletişim kutusu

Yeni Web Uygulaması iletişim kutusu: Şablonlar panelinde MVC ASP.NET şablonu seçildi

İsteğe bağlı: Çözümün adını WebApp1 olarak Mvc5 olarak değiştirme. Visual Studio yeni çözüm adını (Mvc5) görüntüler ve bu da bu projeyi bir sonraki projeden daha kolay bir şekilde anlatmayı kolaylaştırır.

ASP.NET Core oluşturma

İki projede ad ASP.NET Core önceki projeyle aynı adla (WebApp1) yeni bir boş web uygulaması oluşturun. Aynı ad alanına sahip olmak, iki proje arasında kod kopyalamayı kolaylaştırır. Aynı adı kullanmak için bu projeyi önceki projeden farklı bir dizinde oluşturun.

Yeni Proje iletişim kutusu

Yeni ASP.NET Web Uygulaması iletişim kutusu: Şablonlar panelinde ASP.NET Core proje şablonu seçildi

  • İsteğe bağlı: Web Uygulaması ASP.NET Core kullanarak yeni bir uygulama oluşturun. Projeyi WebApp1 olarak adlandırarak Bireysel Kullanıcı Hesapları kimlik doğrulaması seçeneğini belirleyin. Bu uygulamayı FullAspNetCore olarak yeniden adlandırabilirsiniz. Bu projenin oluşturulması, dönüştürmede zamandan tasarruf sağlar. Son sonuç şablon tarafından oluşturulan kodda görüntüleme, kod dönüştürme projesine kopyalanamaz veya şablon tarafından oluşturulan projeyle karşılaştırabilirsiniz.

Siteyi MVC'yi kullanmak üzere yapılandırma

  • .NET Core'a hedef Microsoft.AspNetCore.App meta veri paketine varsayılan olarak başvurdu. Bu paket, MVC uygulamaları tarafından yaygın olarak kullanılan paketleri içerir. Hedef .NET Framework, paket başvuruları proje dosyasında tek tek listelenmiş olması gerekir.

Microsoft.AspNetCore.Mvc, ASP.NET Core MVC çerçevesidir. Microsoft.AspNetCore.StaticFiles , statik dosya işleyicisidir. ASP.NET Core uygulamaları, örneğin statik dosyaları sunan ara yazılımı açıkça kabul edin. Daha fazla bilgi için bkz. Statik dosyalar.

  • Startup.cs dosyasını açın ve kodu aşağıdakiyle eş olacak şekilde değiştirebilirsiniz:
public class Startup
{
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection 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)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseStaticFiles();

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

Genişletme UseStaticFiles yöntemi statik dosya işleyicisini ekler. Genişletme UseMvc yöntemi yönlendirme ekler. Daha fazla bilgi için bkz. Uygulama Başlatma ve Yönlendirme.

Denetleyici ve görünüm ekleme

Bu bölümde, bir sonraki bölümde geçirilen MVC denetleyicisi ve görünümler için ASP.NET bir denetleyici ve görünüm eklenmiştir.

  • Denetleyiciler dizini ekleyin.

  • Controllers dizinine Home Controller.cs adlı bir Denetleyici Sınıfı ekleyin.

MVC Denetleyici Sınıfı'nın seçili olduğu Yeni Öğe Ekle iletişim kutusu (ASP.NET Core 2.1 yayından önce)

  • Görünümler dizini ekleyin.

  • Bir Views/ Home dizini ekleyin.

  • Home Views/ Razor dizinine Index.cshtml adlı bir Görünüm ekleyin.

MVC Görünüm Sayfası'nın seçili olduğu Yeni Öğe Ekle iletişim kutusu (ASP.NET Core 2.1 yayından önce)

Proje yapısı aşağıda gösterilmiştir:

Çözüm Gezgini WebApp1'in dosyalarını ve dizinlerini gösteren dosyalar

Views/ Home /Index.cshtml dosyasının içeriğini aşağıdaki işaretlemeyle değiştirin:

<h1>Hello world!</h1>

Uygulamayı çalıştırın.

Web uygulaması Microsoft Edge

Daha fazla bilgi için bkz. Denetleyiciler ve Görünümler.

Aşağıdaki işlevsellik, örnek MVC projesinden ASP.NET projesine ASP.NET Core gerektirir:

  • istemci tarafı içerik (CSS, yazı tipleri ve betikler)

  • denetleyiciler

  • görünümler

  • modeller

  • bundling (bundling)

  • filtreler

  • Oturum açma/oturumu açma Identity (Bu işlem sonraki öğreticide yapılır.)

Denetleyiciler ve görünümler

  • MVC'den gelen yöntemlerin her ASP.NET HomeController yeni 'ye HomeController kopyalayın. MVC ASP.NET de yerleşik şablonun denetleyici eylem yöntemi dönüş türü ActionResult şudur: MVC'de ASP.NET Core yöntemleri bunun yerine IActionResult geri döner. ActionResult , IActionResult bu nedenle eylem yöntemlerinin dönüş türünü değiştirmeye gerek yoktur.

  • ASP.NET MVC projesinden About.cshtml, Contact.cshtml ve Index.cshtml görünüm dosyalarını ASP.NET Core Razor kopyalayın.

Her yöntemi test etmek

Düzen dosyası ve stilleri henüz geçirilmez, bu nedenle işlenmiş görünümler yalnızca görünüm dosyalarında içeriği içerir. ve görünümleri için oluşturulan düzen About Contact dosyası henüz kullanılamıyor.

  • Geçerli bağlantı noktası numarasını ASP.NET çekirdek projesinde kullanılan bağlantı noktası numarasıyla değiştirerek çalışan ASP.NET tarayıcıdan işlenen görünümleri çağırma. Örneğin: https://localhost:44375/home/about.

Kişi sayfası

Stil ve menü öğelerinin eksik olduğunu unutmayın. Stil bir sonraki bölümde düzeltilecek.

Statik içerik

MVC 5 ASP.NET önceki sürümlerde statik içerik web projesinin kökünden barındırıldı ve sunucu tarafı dosyalarıyla kesişti. Bu ASP.NET Core, statik içerik wwwroot dizininde barındırıldı. MVC uygulamasındaki statik ASP.NET projesinde wwwroot dizinine ASP.NET Core kopyalayın. Bu örnek dönüştürmede:

  • ASP.NET MVC projesinden favicon.ico dosyasını ASP.NET Core projesinde wwwroot dizinine kopyalayın.

MVC ASP.NET, stili için Bootstrap kullanır ve Bootstrap dosyalarını İçerik ve Betik dizinlerine depolar. ASP.NET MVC projesini oluşturan şablon, düzen dosyasında (Views/Shared/_Layout.cshtml) Bootstrap'e başvurur. bootstrap.js ve bootstrap.css dosyaları, ASP.NET MVC projesinde yeni projesinde wwwroot dizinine kopyalanır. Bunun yerine, bu belge sonraki bölümde CDN'leri kullanarak Bootstrap (ve diğer istemci tarafı kitaplıkları) için destek ekler.

Düzen dosyasını geçirme

  • ASP.NET MVC projesinin Views dizininden _ViewStart.cshtml dosyasını ASP.NET Core projesinin Views dizinine kopyalayın. _ViewStart.cshtml dosyası MVC'de ASP.NET Core değişmemiştir.

  • Görünümler/Paylaşılan dizin oluşturun.

  • İsteğe bağlı: FullAspNetCore MVC projesinin Views dizininden _ViewImports.cshtml dosyasını ASP.NET Core projenin Views dizinine kopyalayın. _ViewImports.cshtml dosyasındaki ad alanı bildirimlerini kaldırın. _ViewImports.cshtml dosyası tüm görünüm dosyaları için ad alanları sağlar ve Etiket Yardımcılarını getirir. Etiket Yardımcıları yeni düzen dosyasında kullanılır. _ViewImports.cshtml dosyası, ASP.NET Core.

  • ASP.NET MVC projesinin Views/Shared dizininden _Layout.cshtml dosyasını ASP.NET Core projesinin Views/Shared dizinine kopyalayın.

_Layout.cshtml dosyasını açın ve aşağıdaki değişiklikleri yapın (tamamlanan kod aşağıda gösterilmiştir):

  • öğesini @Styles.Render("~/Content/css") <link> bootstrap.css yüklemek için bir öğesiyle değiştirin (aşağıya bakın).

  • @Scripts.Render("~/bundles/modernizr") kaldırın.

  • Satırı açıklama @Html.Partial("_LoginPartial") satırı yap (satırı ile çevreler). @*...*@ Daha fazla bilgi için bkz. Kimlik Doğrulamayı Geçirme Identity ve ASP.NET Core

  • öğesini @Scripts.Render("~/bundles/jquery") bir <script> öğesiyle değiştirin (aşağıya bakın).

  • öğesini @Scripts.Render("~/bundles/bootstrap") bir <script> öğesiyle değiştirin (aşağıya bakın).

Bootstrap CSS dahil etme için değiştirme işaretlemesi:

<link rel="stylesheet"
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
    integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">

jQuery ve Bootstrap JavaScript içermesi için değiştirme işaretlemesi:

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
    integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

Güncelleştirilmiş _Layout.cshtml dosyası aşağıda gösterilmiştir:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    <link rel="stylesheet"
          href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
          crossorigin="anonymous">
</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                    <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                </ul>
                @*@Html.Partial("_LoginPartial")*@
            </div>
        </div>
    </div>
    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
        </footer>
    </div>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
            integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
            crossorigin="anonymous"></script>
    @RenderSection("scripts", required: false)
</body>
</html>

Siteyi tarayıcıda görüntüleyebilirsiniz. Şimdi beklenen stiller yerinde olacak şekilde doğru şekilde yüklenmeli.

  • İsteğe bağlı: Yeni düzen dosyasını kullanmayı deneyin. FullAspNetCore projesinden düzen dosyasını kopyalayın. Yeni düzen dosyası Etiket Yardımcılarını kullanır ve başka geliştirmeleri vardır.

Gruplama ve minimumlaştırmayı yapılandırma

Gruplama ve minimumlaştırmayı yapılandırma hakkında bilgi için bkz. Gruplama ve Minification.

HTTP 500 hatalarını çözme

Sorunun kaynağı hakkında bilgi içeren http 500 hata iletilerine neden olan birçok sorun vardır. Örneğin Views/_ViewImports.cshtml dosyasında projede mevcut olmayan bir ad alanı varsa HTTP 500 hatası oluşturulur. Varsayılan olarak ASP.NET Core, uzantısı UseDeveloperExceptionPage uygulamasına eklenir ve yapılandırma Geliştirme IApplicationBuilder olduğunda yürütülür. Aşağıdaki kodda bir örnek bakın:

public class Startup
{
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection 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)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseStaticFiles();

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

ASP.NET Core özel durumları HTTP 500 hata yanıtlarına dönüştürür. Normalde, sunucuyla ilgili hassas olabilecek bilgilerin açıklanmasına engel olmak için hata ayrıntıları bu yanıtlara dahil değildir. Daha fazla bilgi için bkz. Geliştirici Özel Durum Sayfası.

Ek kaynaklar