"/>"/>
Yazılım Dilleri
Asp.Net 4.5 Kitabı
Skip Navigation Links

Asp.Net MVC Model Oluşturma

Bu makalemizde Asp.Net MVC’de Model oluşturmayı ve bu model ile Create View’ını nasıl oluşturacağımızı inceleyeceğiz.

 Bu makalemizde Asp.Net MVC’de Model oluşturmayı ve bu model ile Create View’ını nasıl oluşturacağımızı inceleyeceğiz.

 
Yeni bir Asp.Net MVC 3 projesi oluşturalım. Oluşturduğumuz projede Solution Explorer’da Model klasörüne sağ tıklayıp Add -> New Item’dan bir Class ekleyelim.
 
 
Sınıfımızın adı KullaniciModel olsun. KullaniciModel içinde kullanıcı işlemlerini gerçekleştirelim. Bu işlemler
  1. Kullanıcı Girişi
  2. Şifre Değiştirme
  3. Yeni Kullanıcı Tanımlama
 
İşlemleri olsun.
 
Öncelikle Kullanıcı Girişi işleminin nasıl yapıldığını inceleyelim.
KullaniciGiris.cs dosyamızı açıp KullaniciGirisModel isminde bir sınıf oluşturalım ve içini aşağıdaki gibi dolduralım. Sonra bu yazdığımız kodların ne işe yaradığını inceleyelim.
 
    public class KullaniciGirisModel
    {
        [Required]
        [Display(Name="Kullanıcı Adı")]
        [StringLength(20,ErrorMessage="{0} en az {2} karakter olmalıdır.",MinimumLength = 4)]
        public string KullaniciAdi { get; set; }
 
        [Required]
        [Display(Name="Şifre")]
        [StringLength(20,ErrorMessage="{0} en az {2} karakter olmalıdır.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        public string Sifre { get; set; }
    }
 
Gördüğünüz gibi KullaniciGirisModel aslında KullaniciAdi ve Sifre değerlerinin tutan bir nesnedir. Fakat bu nesnelerin aldığı bazı attribute’lar sayesinde bu nesnelerin kullanımında farklılıklar olacaktır. Şimdi bu Attribute’ları inceleyelim.
 
Required : Doldurulması zorunlu olan property’lerde tanımlanır. Burada kullanıcı girişinin yapılması için kullanıcı adı ve şifre değerlerinin doldurulması gerektiği için her iki propertynin başına Required ekledik.
 
Display : View’da göreceğimiz text’tir. (örneğimiz çalıştığında daha iyi anlaşılacaktır).
 
StringLength : Bu property’e aktarılacak ifadenin karakter uzunluğuyla ilgili kısıtlama yapmamızı sağlamaktadır.
 
DataType : Bu property’nin veri türünü belirtmemizi sağlamaktadır.
 
Şimdi bu kullanıcı işlemleri için KullaniciController oluşturalım.
 
Projemize bir Empty Controller ekleyelim (“KullaniciController”). KullaniciController.cs’nin içini boşaltalım ve şu şekilde düzenleyelim:
 
    public class KullaniciController : Controller
    {
        public ActionResult KullaniciGiris()
        {
            return View();
        }
 
        [HttpPost]
        public ActionResult KullaniciGiris(KullaniciGirisModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                if (model.KullaniciAdi.ToLower() == "ugur" && model.Sifre == "123456")
                {
                    FormsAuthentication.SetAuthCookie(model.KullaniciAdi, false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", "Lütfen kullanıcı bilgilerinizi kontrol ediniz.");
                }
            }
 
            return View(model);
        }
 
    }
 
Burada dikkat etmemiz gereken bazı noktalar var.
  1. KullaniciGiris() methodu 2 tane oluşturulmuştur. İlki View’ı oluşturmak için, ikincisi ise submit işlemiş yapıldıktan sonra (Giriş Yap butonuna basıldıktan sonra) çalışacak kod bloğumuzdur. İkinci methodda 2 parametre alıyor : model, returnUrl. model değişkeninde kullanıgı giriş bilgileri (textbox’lara girdiğimiz bilgiler, returnUrl’de ise hangi sayfaya yönlenmesini istiyorsak o sayfanın bilgisi yer almaktadır.
  2. ModelState.IsValid : Hatırlarsanız KullaniciGirisModel oluştururken bazı kısıtlamalar verdik : kullanıcı adı en az 4 karakter olmalı, şifre en az 6 karakter olmalı gibi. Bunları kontrol edip eğer bunlara uygun ise işlemi yapmasını sağlayamaktadır.
  3. FormsAuthentication.SetAuthCookie : Kullanıcının online olduğu bilgisini Cookie’de tutmamızı sağlamaktadır.
  4. RedirectToAction() : Home klasöründeki Index.aspx’e gitmeyi sağlar (başka bir deyişle HomeController’daki Index methodu)
 
KullaniciGiris methodumuza sağ tıklayıp Add->View diyerek Kullanici klasörünün altına KullaniciGiris.aspx’i ekliyoruz.
 
 
Dikkat ederseniz View eklerken Create a strongly-typed view seçeneğini seçip “KullaniciGirisModel” isimli modelimizi seçtik. Bunun nedeni sayfamızda çalışacağımız modelin belli olması ve işlemleri bu model üzerinde gerçekleştirecek olmamızdır.
 
Son olarak Shared->LogOnUserControl.ascx’te de küçük bir değişiklik yapalım ve şu şekilde düzenleyelim (Kendi yazdığımız giriş formunun kullanılması için)
 
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
    if (Request.IsAuthenticated) {
%>
        Welcome <strong><%: Page.User.Identity.Name %></strong>!
        [ <%: Html.ActionLink("Log Off", "LogOff", "Account") %> ]
<%
    }
    else {
%>
        [ <%: Html.ActionLink("Giriş Yap", "KullaniciGiris", "Kullanici") %> ]
<%
    }
%>
 
Şimdi projemizi çalıştıralım.
 
 
Göründüğü üzere sağ üst tarafta (LogOnUserController’ın olduğu bölgede) Giriş Yap linki gelmiştir. Şimdi bu linke tıklayıp açılan ekrandan kullanıcı girişimizi yapalım.
 
 
Kullanıcı adı’na “a”, şifreye de “1” yazdım. Giriş Yap butonuna BASMADAN ekrandaki uyarılarla karşılaştım.
 
Şimdi kullanıcı adı ve şifremizi kriterlere uygun ama yanlış değerler girelim.
 
 
Şimdi kullanıcı adı ve şifreyi düzgün girelim ve bakalım nasıl bir yanıt alacağız.
 
 
Sağ üst köşeye baktığımızda kullanıcı girişinin başarıyla yapıldığını görebiliyoruz.
 
Sonraki makalelerimizde MVC’de model kavramını daha detaylı inceleyeceğiz.
 
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
 

Yorumlar (1)

  1. Avatar
    ismail kaşan

    20.10.2014

    Merhabalar hocam. yukarıda anlattıkarınızın aynısını yaptım ve giris yap a tıklayınca bos sayfa geliyor. sorunu çözemedim birde projemde LogOnUserControl.ascx dosyası yok. eklemeye çalıştım ama ekleyemedim. MVC 3 Razor kullaniyorumm. Yardım edebilir misiniz ? şimdiden teşekkürler.

Yorum Yap

Mail listesine katılmak için tıklayınız

Hakkımdaki son bilgilere anlık erişmek için mail listesine katılabilirsiniz.