Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
tarafından Stephen Walther
ASP.NET MVC Görünümü nedir ve HTML sayfasından farkı nedir? Bu öğreticide Stephen Walther size Görünümler'i tanıtır ve Görünüm içinde Verileri Görüntüleme ve HTML Yardımcılarından nasıl yararlanabileceğinizi gösterir.
Bu öğreticinin amacı, ASP.NET MVC görünümlerine, verileri görüntülemeye ve HTML Yardımcılarına kısa bir giriş sağlamaktır. Bu öğreticinin sonunda yeni görünümler oluşturmayı, bir denetleyiciden görünüme veri geçirmeyi ve bir görünümde içerik oluşturmak için HTML Yardımcılarını kullanmayı anlamanız gerekir.
Görünümleri Anlama
ASP.NET veya Etkin Sunucu Sayfalarından farklı olarak, ASP.NET MVC bir sayfaya doğrudan karşılık gelen hiçbir şey içermez. ASP.NET MVC uygulamasında, diskte tarayıcınızın adres çubuğuna yazdığınız URL'deki yola karşılık gelen bir sayfa yoktur. ASP.NET MVC uygulamasındaki bir sayfaya en yakın şey , görünüm olarak adlandırılan bir şeydir.
ASP.NET MVC uygulamasında gelen tarayıcı istekleri denetleyici eylemleriyle eşlenir. Denetleyici eylemi bir görünüm döndürebilir. Ancak, denetleyici eylemi sizi başka bir denetleyici eylemine yönlendirme gibi başka bir eylem türü gerçekleştirebilir.
Liste 1, HomeController adlı basit bir denetleyici içerir. HomeController, Index() ve Details() adlı iki denetleyici eylemini kullanıma sunar.
Liste 1 - HomeController.vb
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index()
Return View()
End Function
Function Details()
Return RedirectToAction("Index")
End Function
End Class
Tarayıcı adres çubuğuna aşağıdaki URL'yi yazarak ilk eylem olan Index() eylemini çağırabilirsiniz:
/Home/Index
Tarayıcınıza şu adresi yazarak ikinci eylemi olan Details() eylemini çağırabilirsiniz:
/Home/Details
Index() eylemi bir görünüm döndürür. Oluşturduğunuz eylemlerin çoğu görünüm döndürür. Ancak, bir eylem diğer eylem sonuçları türlerini döndürebilir. Örneğin, Details() eylemi gelen isteği Index() eylemine yeniden yönlendiren bir RedirectToActionResult döndürür.
Index() eylemi aşağıdaki tek kod satırını içerir:
View()
Bu kod satırı, web sunucunuzda aşağıdaki yolda bulunması gereken bir görünüm döndürür:
\Views\Home\Index.aspx
Görünümün yolu, denetleyicinin adından ve denetleyici eyleminin adından çıkarılır.
İsterseniz, görünüm hakkında açık olabilirsiniz. Aşağıdaki kod satırı Fred adlı bir görünüm döndürür:
View( Fred )
Bu kod satırı yürütürken, aşağıdaki yoldan bir görünüm döndürülür:
\Views\Home\Fred.aspx
Not
ASP.NET MVC uygulamanız için birim testleri oluşturmayı planlıyorsanız, görünüm adları hakkında açık olmak iyi bir fikirdir. Bu şekilde, beklenen görünümün bir denetleyici eylemi tarafından döndürüldüğünü doğrulamak için bir birim testi oluşturabilirsiniz.
Görünüme İçerik Ekleme
Görünüm, betik içerebilen standart bir (X)HTML belgesidir. Betikleri bir görünüme dinamik içerik eklemek için kullanırsınız.
Örneğin, Liste 2'deki görünümde geçerli tarih ve saat görüntülenir.
Liste 2 - \Views\Home\Index.aspx
<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Index</title>
</head>
<body>
<div>
The current date and time is
<% Response.Write(DateTime.Now)%>
</div>
</body>
</html>
Liste 2'deki HTML sayfasının gövdesinde aşağıdaki betiğin bulunduğuna dikkat edin:
<% Response.Write(DateTime.Now)%>
Betiğin başlangıcını ve sonunu işaretlemek için % ve %> betik sınırlayıcılarını <kullanırsınız. Bu betik Visual Basic'te yazılmıştır. İçeriği tarayıcıda işlemek için Response.Write() yöntemini çağırarak geçerli tarih ve saati görüntüler. Betik sınırlayıcıları <% ve %> bir veya daha fazla deyimi yürütmek için kullanılabilir.
Siz Response.Write() öğesini bu kadar sık çağırdığınızdan, Microsoft size Response.Write() yöntemini çağırmak için bir kısayol sağlar. Liste 3'teki görünümde, Response.Write() çağrısı için kısayol olarak %= ve %> sınırlayıcıları <kullanılır.
Liste 3 - Views\Home\Index2.aspx
<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Index</title>
</head>
<body>
<div>
The current date and time is
<%= DateTime.Now %>
</div>
</body>
</html>
Bir görünümde dinamik içerik oluşturmak için herhangi bir .NET dilini kullanabilirsiniz. Normalde, denetleyicilerinizi ve görünümlerinizi yazmak için Visual Basic .NET veya C# kullanırsınız.
Görünüm İçeriği Oluşturmak için HTML Yardımcılarını Kullanma
Görünüme içerik eklemeyi kolaylaştırmak için HTML Yardımcısı adlı bir şeyden yararlanabilirsiniz. HTML Yardımcısı, genellikle bir dize oluşturan bir yöntemdir. METIN kutuları, bağlantılar, açılan listeler ve liste kutuları gibi standart HTML öğeleri oluşturmak için HTML Yardımcılarını kullanabilirsiniz.
Örneğin, Listeleme 4'teki görünüm, oturum açma formu oluşturmak için üç HTML Yardımcısı'nın (BeginForm()), TextBox() ve Password() yardımcılarından yararlanır (bkz. Şekil 1).
Liste 4 -- \Views\Home\Login.aspx
<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Login Form</title>
</head>
<body>
<div>
<% Using Html.BeginForm()%>
<label for="UserName">User Name:</label>
<br />
<%= Html.TextBox("UserName") %>
<br /><br />
<label for="Password">Password:</label>
<br />
<%= Html.Password("Password") %>
<br /><br />
<input type="submit" value="Log in" />
<% End Using%>
</div>
</body>
</html>
Şekil 01: Standart oturum açma formu (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Tüm HTML Yardımcıları yöntemleri, görünümün Html özelliğinde çağrılır. Örneğin, Html.TextBox() yöntemini çağırarak bir TextBox işleyebilirsiniz.
Hem Html.TextBox() hem de Html.Password() yardımcılarını çağırırken %= ve %> betik sınırlayıcılarını <kullandığınıza dikkat edin. Bu yardımcılar yalnızca bir dize döndürür. Dizeyi tarayıcıya işlemek için Response.Write() öğesini çağırmanız gerekir.
HTML Yardımcısı yöntemlerinin kullanılması isteğe bağlıdır. Yazmanız gereken HTML ve betik miktarını azaltarak hayatınızı kolaylaştırır. Liste 5'teki görünüm, HTML Yardımcıları kullanmadan Liste 4'teki görünümle tam olarak aynı formu işler.
Liste 5 -- \Views\Home\Login.aspx
<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Login Form</title>
</head>
<body>
<div>
<form method="post" action="/Home/Login">
<label for="userName">User Name:</label>
<br />
<input name="userName" />
<br /><br />
<label for="password">Password:</label>
<br />
<input name="password" type="password" />
<br /><br />
<input type="submit" value="Log In" />
</form>
</div>
</body>
</html>
Ayrıca kendi HTML Yardımcılarınızı oluşturma seçeneğiniz de vardır. Örneğin, bir HTML tablosundaki veritabanı kayıtları kümesini otomatik olarak görüntüleyen bir GridView() yardımcı yöntemi oluşturabilirsiniz. Bu konuyu Özel HTML Yardımcıları Oluşturma öğreticisinde inceleyeceğiz.
Görünüme Veri Geçirmek için Verileri Görüntülemeyi Kullanma
Verileri bir denetleyiciden görünüme geçirmek için görüntüleme verilerini kullanırsınız. Verileri posta yoluyla gönderdiğiniz bir paket gibi düşünün. Bir denetleyiciden görünüme geçirilen tüm veriler bu paket kullanılarak gönderilmelidir. Örneğin, Listeleme 6'daki denetleyici verileri görüntülemek için bir ileti ekler.
Liste 6 - ProductController.vb
Public Class ProductController
Inherits System.Web.Mvc.Controller
Function Index()
ViewData("message") = "Hello World!"
Return View()
End Function
End Class
Denetleyici ViewData özelliği, ad ve değer çiftleri koleksiyonunu temsil eder. Liste 6'da Index() yöntemi message adlı görünüm veri koleksiyonuna Merhaba Dünya! değeriyle bir öğe ekler. Görünüm Index() yöntemi tarafından döndürülürse, görünüm verileri otomatik olarak görünüme geçirilir.
Liste 7'deki görünüm, görüntüleme verilerinden iletiyi alır ve iletiyi tarayıcıya işler.
Liste 7 -- \Views\Product\Index.aspx
<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Product Index</title>
</head>
<body>
<div>
<%=Html.Encode(ViewData("message"))%>
</div>
</body>
</html>
Görünümün, iletiyi işlerken Html.Encode() HTML Yardımcısı yönteminden yararlandığını görebilirsiniz. Html.Encode() HTML Yardımcısı, ve > gibi < özel karakterleri web sayfasında görüntülenmesi güvenli karakterlere kodlar. Kullanıcının bir web sitesine gönderdiği içeriği her işleyin, JavaScript ekleme saldırılarını önlemek için içeriği kodlamanız gerekir.
(İletiyi ProductController'da kendimiz oluşturduğumuz için, iletiyi kodlamamız gerekmez. Ancak, görünümdeki verilerden alınan içeriği görüntülerken Html.Encode() yöntemini her zaman çağırmak iyi bir alışkanlıktır.)
Liste 7'de, bir denetleyiciden görünüme basit bir dize iletisi geçirmek için görüntüleme verilerinden yararlandık. Ayrıca, bir denetleyiciden görünüme veritabanı kayıtları koleksiyonu gibi diğer veri türlerini geçirmek için de görüntüleme verilerini kullanabilirsiniz. Örneğin, Ürünler veritabanı tablosunun içeriğini bir görünümde görüntülemek istiyorsanız, veritabanı kayıtlarının koleksiyonunu görüntüleme verilerine geçirirsiniz.
Ayrıca, kesin olarak yazılan görünüm verilerini bir denetleyiciden görünüme geçirme seçeneğiniz de vardır. Bu konuyu , Kesin Türe Sahip Görünüm Verilerini ve Görünümlerini Anlama öğreticisinde inceleyeceğiz.
Özet
Bu öğreticide ASP.NET MVC görünümleri, verileri görüntüleme ve HTML Yardımcıları hakkında kısa bir giriş sağlanmıştır. İlk bölümde, projenize yeni görünümler eklemeyi öğrendinsiniz. Belirli bir denetleyiciden çağırmak için doğru klasöre bir görünüm eklemeniz gerektiğini öğrendinsiniz. Ardından, HTML Yardımcıları konusunu ele aldık. HTML Yardımcılarının standart HTML içeriğini kolayca oluşturmanıza nasıl olanak sağladığını öğrendiniz. Son olarak, bir denetleyiciden görünüme veri geçirmek için görüntüleme verilerinden nasıl yararlanabileceğinizi öğrendinsiniz.