Denetleyici Ekleme (C#)Adding a Controller (C#)

Rick Anderson tarafındanby Rick Anderson

Note

Burada ASP.NET MVC 5 ve Visual Studio 2013 kullanan Bu öğreticinin güncelleştirilmiş bir sürümü mevcuttur.An updated version of this tutorial is available here that uses ASP.NET MVC 5 and Visual Studio 2013. Daha güvenlidir, daha kolay hale gelir ve daha fazla özellik gösterir.It's more secure, much simpler to follow and demonstrates more features.

Bu öğretici, Microsoft Visual Studio ücretsiz bir sürümü olan Microsoft Visual Web Developer 2010 Express Service Pack 1 ' i kullanarak bir ASP.NET MVC web uygulaması oluşturmaya ilişkin temel bilgileri öğretir.This tutorial will teach you the basics of building an ASP.NET MVC Web application using Microsoft Visual Web Developer 2010 Express Service Pack 1, which is a free version of Microsoft Visual Studio. Başlamadan önce, aşağıda listelenen önkoşulları yüklediğinizden emin olun.Before you start, make sure you've installed the prerequisites listed below. Şu bağlantıya tıklayarak hepsini yükleyebilirsiniz: Web Platformu Yükleyicisi.You can install all of them by clicking the following link: Web Platform Installer. Alternatif olarak, aşağıdaki bağlantıları kullanarak önkoşulları ayrı ayrı yükleyebilirsiniz:Alternatively, you can individually install the prerequisites using the following links:

Visual Web Developer 2010 yerine Visual Studio 2010 kullanıyorsanız, aşağıdaki bağlantıya tıklayarak önkoşulları yükleyebilirsiniz: Visual studio 2010 önkoşulları.If you're using Visual Studio 2010 instead of Visual Web Developer 2010, install the prerequisites by clicking the following link: Visual Studio 2010 prerequisites.

Kaynak koduna sahip bir Visual Web C# Developer projesi, bu konuyla birlikte kullanılabilecek.A Visual Web Developer project with C# source code is available to accompany this topic. Sürümü C# indirin.Download the C# version. Visual Basic tercih ediyorsanız, Bu öğreticinin Visual Basic sürümüne geçin.If you prefer Visual Basic, switch to the Visual Basic version of this tutorial.

MVC, Model-View-Controlleriçin temsil eder.MVC stands for model-view-controller. MVC, iyi şekilde tasarlanmış ve bakımı kolay uygulamalar geliştirmeye yönelik bir modeldir.MVC is a pattern for developing applications that are well architected and easy to maintain. MVC tabanlı uygulamalar şunları içerir:MVC-based applications contain:

  • Denetleyiciler: uygulamaya gelen istekleri işleyen sınıflar, model verilerini alır ve ardından istemciye bir yanıt döndüren şablonları görüntüleme seçeneğini belirtir.Controllers: Classes that handle incoming requests to the application, retrieve model data, and then specify view templates that return a response to the client.
  • Modeller: uygulamanın verilerini temsil eden ve bu veriler için iş kurallarını zorlamak üzere doğrulama mantığını kullanan sınıflar.Models: Classes that represent the data of the application and that use validation logic to enforce business rules for that data.
  • Görünümler: uygulamanızın HTML yanıtlarını dinamik olarak oluşturmak için kullandığı şablon dosyaları.Views: Template files that your application uses to dynamically generate HTML responses.

Bu öğretici serisinde bu kavramların tümünü ele alacağız ve bir uygulama oluşturmak için bunları nasıl kullanacağınızı göstereceğiz.We'll be covering all these concepts in this tutorial series and show you how to use them to build an application.

Bir denetleyici sınıfı oluşturarak başlayalım.Let's begin by creating a controller class. Çözüm Gezgini, denetleyiciler klasörüne sağ tıklayın ve ardından Denetleyici Ekle' yi seçin.In Solution Explorer, right-click the Controllers folder and then select Add Controller.

Yeni denetleyicinizi "Merhaba Dünya denetleyicisi" olarak adlandırın.Name your new controller "HelloWorldController". Varsayılan şablonu boş denetleyici olarak bırakın ve Ekle' ye tıklayın.Leave the default template as Empty controller and click Add.

AddHelloWorldControllerAddHelloWorldController

Çözüm Gezgini , HelloWorldController.csadlı yeni bir dosyanın oluşturulduğunu fark edin.Notice in Solution Explorer that a new file has been created named HelloWorldController.cs. Dosya IDE 'de açıktır.The file is open in the IDE.

public class HelloWorldController bloğu içinde, aşağıdaki koda benzeyen iki yöntem oluşturun.Inside the public class HelloWorldController block, create two methods that look like the following code. Denetleyici bir örnek olarak HTML dizesi döndürür.The controller will return a string of HTML as an example.

using System.Web;
using System.Web.Mvc; 
 
namespace MvcMovie.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
        // 
        // GET: /HelloWorld/ 
 
        public string Index() 
        { 
            return "This is my <b>default</b> action..."; 
        } 
 
        // 
        // GET: /HelloWorld/Welcome/ 
 
        public string Welcome() 
        { 
            return "This is the Welcome action method..."; 
        } 
    } 
}

Denetleyicinizin adı HelloWorldController ve yukarıdaki ilk yöntem Indexolarak adlandırılmıştır.Your controller is named HelloWorldController and the first method above is named Index. Bir tarayıcıdan çağıralım.Let's invoke it from a browser. Uygulamayı çalıştırın (F5 tuşuna basın veya CTRL + F5 tuşlarına basın).Run the application (press F5 or Ctrl+F5). Tarayıcıda, adres çubuğundaki yola "HelloWorld" ekleyin.In the browser, append "HelloWorld" to the path in the address bar. (Örneğin, aşağıdaki çizimde http://localhost:43246/HelloWorld.) Tarayıcıdaki sayfa aşağıdaki ekran görüntüsüne benzer şekilde görünür.(For example, in the illustration below, it's http://localhost:43246/HelloWorld.) The page in the browser will look like the following screenshot. Yukarıdaki yöntemde kod doğrudan bir dize döndürdü.In the method above, the code returned a string directly. Sisteme yalnızca birkaç HTML döndürdüyordu ve!You told the system to just return some HTML, and it did!

ASP.NET MVC, gelen URL 'ye bağlı olarak farklı denetleyici sınıflarını (ve bunların içinde farklı eylem yöntemlerini) çağırır.ASP.NET MVC invokes different controller classes (and different action methods within them) depending on the incoming URL. ASP.NET MVC tarafından kullanılan varsayılan eşleme mantığı, hangi kodun çağıracağına belirlemek için şöyle bir biçim kullanır:The default mapping logic used by ASP.NET MVC uses a format like this to determine what code to invoke:

/[Controller]/[ActionName]/[Parameters]

URL 'nin ilk bölümü yürütülecek denetleyici sınıfını belirler.The first part of the URL determines the controller class to execute. Bu nedenle, /HelloWorld HelloWorldController sınıfıyla eşlenir.So /HelloWorld maps to the HelloWorldController class. URL 'nin ikinci bölümü, yürütülecek sınıftaki Action metodunu belirler.The second part of the URL determines the action method on the class to execute. Bu nedenle /HelloWorld/Index HelloWorldController sınıfının Index yönteminin yürütülmesine neden olur.So /HelloWorld/Index would cause the Index method of the HelloWorldController class to execute. Yalnızca /HelloWorld 'e göz attık ve Index yöntemi varsayılan olarak kullanılmış olduğuna dikkat edin.Notice that we only had to browse to /HelloWorld and the Index method was used by default. Bunun nedeni, Index adlı bir yöntemin, açıkça belirtilmemişse bir denetleyicide çağrılacak olan varsayılan yöntemdir.This is because a method named Index is the default method that will be called on a controller if one is not explicitly specified.

http://localhost:xxxx/HelloWorld/Welcome adresine gidin.Browse to http://localhost:xxxx/HelloWorld/Welcome. Welcome yöntemi çalışır ve "Bu hoş geldiniz eylemi yöntemi..." dizesini döndürür.The Welcome method runs and returns the string "This is the Welcome action method...". Varsayılan MVC eşlemesi /[Controller]/[ActionName]/[Parameters].The default MVC mapping is /[Controller]/[ActionName]/[Parameters]. Bu URL için, denetleyici HelloWorld ve Welcome Action yöntemidir.For this URL, the controller is HelloWorld and Welcome is the action method. URL 'nin [Parameters] parçasını henüz kullanmadınız.You haven't used the [Parameters] part of the URL yet.

URL 'den denetleyiciye bazı parametre bilgilerini geçirebilmeniz için örneği biraz daha değiştirelim (örneğin, /HelloWorld/Welcome? ad = Scott&numtimes = 4).Let's modify the example slightly so that you can pass some parameter information from the URL to the controller (for example, /HelloWorld/Welcome?name=Scott&numtimes=4). Welcome yönteminizi aşağıda gösterildiği gibi iki parametre içerecek şekilde değiştirin.Change your Welcome method to include two parameters as shown below. Kodun, bu parametre için hiçbir C# değer geçirilmemişse, numTimes parametresinin varsayılan olarak 1 ' e olacağını belirtmek için isteğe bağlı parametre özelliğini kullandığını unutmayın.Note that the code uses the C# optional-parameter feature to indicate that the numTimes parameter should default to 1 if no value is passed for that parameter.

public string Welcome(string name, int numTimes = 1) {
     return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

Uygulamanızı çalıştırın ve örnek URL 'ye (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)gidin.Run your application and browse to the example URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). URL 'de name ve numtimes için farklı değerler deneyebilirsiniz.You can try different values for name and numtimes in the URL. Sistem, adlandırılmış parametreleri adres çubuğundaki sorgu dizesinden, yönteminizin içindeki parametrelere otomatik olarak eşler.The system automatically maps the named parameters from the query string in the address bar to parameters in your method.

Bu örneklerde, denetleyici MVC 'nin "VC" bölümünü (yani, görünüm ve denetleyici çalışır) yapıyor.In both these examples the controller has been doing the "VC" portion of MVC — that is, the view and controller work. Denetleyici HTML 'i doğrudan döndürüyor.The controller is returning HTML directly. Normalde, kod için çok daha fazla hale geldiği için denetleyicilerin doğrudan HTML döndürmesini istemezsiniz.Ordinarily you don't want controllers returning HTML directly, since that becomes very cumbersome to code. Bunun yerine, genellikle HTML yanıtı oluşturmaya yardımcı olmak için ayrı bir görünüm şablonu dosyası kullanacağız.Instead we'll typically use a separate view template file to help generate the HTML response. Şimdi bunu nasıl yapadığımızda bakalım.Let's look next at how we can do this.