Merhaba MVC Severler,
Önceki yazımda global.asax’ın ne işe yaradığını ve MapRoute kavramını konuştuk. Bu yazımda ise Html.Form kontrolünün ne işe yaradığını, html kontrollerinin nasıl kullanılabildiğini göreceğiz.
Arkadaşlar unutmayalım ki, biz MVC’de sayfaları değil metotları çağırıyoruz. İlk uygulamamızda hatırlarsanız, sadece 2 tane view oluşturduk ve bu View’leri görüntüledik.
Peki biz eğer sayfaları çağırmıyorsak, metotları nasıl çağıracağız?
Cevabı aslında oldukça basit: UrlHelper olan Url’i kullanarak.
Kontrolleri nasıl kullabilirim? Form nasıl oluştururum ve formdan bilgileri nasıl alabilirim?
Öncelikle arkadaşlar dikkat çekmek istediğim bölüm, ASP.NET kontrollerinin toolbox içerisinde yer almaması. ASP.NET MVC içerisinde ASP.NET kontrollerini kullanmıyoruz. Bu yüzden bir tane TextBox atıyım name’ine de txtMesaj dedikten sonra Controller içerisinde bu kontrole erişim diye düşünüyorsanız gerçekle yüzleşme vakti. Bu şekilde bir erişim MVC içerisinde mümkün değildir arkadaşlar.
MVC içerisinde Html kontrolleri kullanmak durumundayız eğer hazır telerik veya devexpress kontrolleri kullanmıyorsanız.
ASP.NET bilenler bilir ki, ASP.NET sayfaları içerisinde eğer kontroller kullanacaksak bir tane form elementi oluşturup içerisinde geri kalan tüm kontrollerimi yazarım. Herhangi bir submit butonunda ise, o form içerisinde tüm nesneler server tarafına gider, bu da server tarafı için fazladan trafik oluşturmaktadır. Ayrıca ASP.NET kontrolleri kullanmadığımız için View State‘in yükünden de kurtulmuş oluruz.
@ işareti ile başlayıp yazdığım satılar Razor söz dizilimidir. Razorun esnekliği ve rahatlığını, kullandıkça daha iyi fark edeceksiniz.
View’lerim içerisinde birden fazla form oluşturabilirim. Her form farklı bir işlev yapabilir, farklı bir action çalıştırabilir, ya da farklı bir
using anahtar sözcüğü ile HtmlHelper’i kullanıyoruz. Html.BeginForm() dedikten sonra artık form elemanlarımı yazabilirim. Burada arkadaşlar BeginForm’a herhangi bir parametre vermezseniz, default olarak View’i döndüren Action çalışacaktır. Eğer kendiniz harici bir Action vermek istiyorsanız. Html.BeginForm(“action adi”) olarak verebilirsiniz. Fakat bu bölümün ayrıntılarını ilerleyen bölümlerde göreceğiz.
@Html.TextBox(“textbox’in name-id si”) diyerek TextBox oluşturabiliyorum. Ne kadar ilginç değil mi? Peki bu verdiğim name/id nerede karşıma çıkacak.
ViewBag.Message: ViewBag ile View içerisinde veri taşıyabilirsiniz. Object olarak değer almaktadır ve dynamic türündedir. Ben View içerisinde atadığımda çağırıldığı yerde içeriğini yazar(response.write gibi).
public ActionResult Contact(string txtMesaj) { ViewBag.Message = txtMesaj; return View(); }
txtMesaj dediğimiz zaman Html.TextBox içerisine yazılan değeri bu şekilde alabiliyorum.
Sadece bu yöntem ile birden fazla yöntem ile bu TextBox içerisinde alabilirim.
Bir sonraki yazımda Html Helper içerisinde sık kullanılan Kontrolleri anlatacağım ve Form yapısını biraz daha inceleyeceğiz.
MVC ile kalın