blog

Asp.NET Core MVC Proje Oluşturmak

Herkese merhaba;

Bugünkü konumuz Microsoft Visual Studio (2019) kullanarak boş bir Asp.NET Core MVC projesi oluşturmak ve sadece temel bileşenleri ekleyerek, MVC uygulamamızı ayağa kaldırmak. 

Visual Studio tarafında proje oluşturmak için hazırlanmış olan herhangi bir şablon kullanmadan boş bir proje oluşturarak işe sıfırdan başlamamızın sebebi, arka planda gerçekleşen işlemleri daha iyi anlayabilmek ve ihtiyacımız olmayan bir çok bileşeni devre dışı bırakarak daha sade ve temiz bir projeyle işe başlamaktır.

1. Boş Projenin Oluşturulması

A) Visual Studio 2019 uygulamasını başlatarak sayfanın altında link olarak yer alan "Continue without code" seçeneğini seçelim. Uygulama açıldıktan sonra, File > New > Project menüsü altından ASP.NET Core Web Application seçelim ve Next ile devam edelim.

B) Projemize bir isim verelim. Ben "EmptyCoreMvc" ismini veriyorum. Create ile projeyi oluşturalım.

C) Bir sonraki ekranda şablon olarak Empty seçelim ve "Configure for HTTPS" seçeneğindeki işareti kaldırarark Create butonuna basalım.

Bu aşamada elmizde boş bir projemiz oluşmuş oldu.

2. Projeyi Düzenleyelim

Yukarıda belirtilen şekilde projemizi oluşturduktan sonra, karşımıza gelen yapıyı özet olarak incelediğimizde projenin yapısı itibarı ile bir web uygulamasından çok bir konsol uygulamasına benzediğini fark edeceksiniz. ASP.NET Core web uygulamaları yapı itibarı ile gerçekten de uygun bir web sunucusu üzerinde çalışabilecek şekilde ayarlanmış olan konsol uygulamalarıdır. Uygulama Program.cs dosyasında yer alan Main metodunun çalıştırılması ile başlamaktadır.

Projemizi her ne kadar boş olarak oluşturmuş olsak da, F5 ile çalıştırdığımızda karşımıza Hello World! mesajı getiren bir web uygulamasının açıldığını göreceğiz. Şimdilik bu mesajı nasıl olup da görüntülendiğini sonraya bırakarak, uygulamamızı geliştirmeye başlayalım.

Temel Bileşenlerin Eklenmesi

A) Projemizi geliştirmeye öncelikle MVC yapımızın temellerini oluşturacak klasörleri ekleyerek başlayalım. Proje adına sağ tıklayarak, "Add New Folder" ile aşağıdaki klasörleri ekleyelim: 

  • Controllers
  • Models
  • TagHelpers
  • ViewComponents
  • ViewModels
  • Views
  • Views/Shared
  • Views/Shared/Components
  • wwwroot

B) Views/Shared klasörü altına bir Razor Layout dosyası ekleyelim:

  • Views klasörü altında yer alan Shared klasörüne sağ tıklayarak Add > New Item... seçelim
  • Açılan pencereden arama bölümüne Layout yazarak, filtrelenmiş olan elemanlar arasından Razor Layout seçelim ve ismini  _Layout.cshtml olarak bırakarak dosyayı ekleyelim.

C) Views klasörü altına bir Razor ViewStart dosyası ekleyelim:

  • Views klasörüne sağ tıklayarakAdd > New Item... seçelim
  • Açılan pencereden arama bölümüne Start yazarak, filtrelenmiş olan elemanlar arasından Razor ViewStart seçelim ve ismini  _ViewStart.cshtml olarak bırakarak dosyayı ekleyelim.

D) Views klasörü altına bir Razor ViewImports dosyası ekleyelim:

  • Views klasörüne sağ tıklayarakAdd > New Item... seçelim
  • Açılan pencereden arama bölümüne Imports yazarak, filtrelenmiş olan elemanlar arasından Razor ViewImports seçelim ve ismini  _ViewImports.cshtml olarak bırakarak dosyayı ekleyelim.

Eklemiş olduğumuz _ViewImports.cshtml dosyasına aşağıda yer alan addTagHelper direktifini ekleyelim:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

wwwroot Folder:

wwwroot is assumed to be the static root folder of the web application. In order to make this folder running properly we need to add

app.UseStaticFiles();

in the Startup.cs Configure method.

These were the standard folders and files, that can be found in a typical ASP.NET MVC Core Web application. 

Add a Controller:

  • Right click the Controllers folder and select Add > Controller...
  • Select MVC Controller - Empty and click Add
  • Set the name as HomeController and click Add

This adds the HomeController.cs file in the Controllers folder. Open this HomeController.cs (if it is not already opened) and right click the method name Index and select Add View...

Just use the default values and click Add.

3. Run the Project

After completing the steps defined above, run the project again (F5) and see what has happened. You will notice that nothing has changed despite all the things we have made so far. Let's take a closer look at the project and see what is happening.

Since ASP.NET Core MVC is actually a console application, lets open the Program.cs by double clicking it. In the Program.cs, there is Main method, the entry point, and inside it we have CreateWebHostBuilder method call. If we examine that method, we see it is creating the default builder, using Startup (Startup.cs class) as the initializer. 

Lets select (by clicking) the Startup and right click > Go to definition (F12) to open the contents. Startup.cs has two methods, ConfigureServices and Configure respectively having comments on them. Unlike the empty ConfigureServices method, Configure method has some code which help the application show the Hello World! message.

Clear the contents of the Configure method (not he method itselft, just the code in it) and run (F5) the application. This time we have an error, showing page is not found. Now, stop the application. Modify the Startup.cs as the following: 

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }
 
    public void Configure(IApplicationBuilder appIHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
 
        app.UseStaticFiles();
 
        app.UseMvcWithDefaultRoute();
    }
}

Re-run the application and now you can see the Index view is showing.

info

About this post

This post is created / summarised by it professionals having deep understanding about the subject. It is simplified and clarified to make the content clear & easy to understand. It may not cover all the necessary key points. It may include content from external resources. Please check references is exists.

mumcu.net © 2019

Copyright © All rights reserved | This template is made with by Colorlib