Bu makalemizde MVC’nin DisplayForModel özelliği ile tek satır kod yazarark model içerisinde belirlediğimiz kurallara göre otomatik olarak oluşturulmasını sağlayabilir böylelikle fazladan kod yazmak durumunda kalmazsınız.
ASP.NET MVC DisplayForModel ile tek satır kod yazarak bütün modeli otomatik olarak oluşturma
Bu örneğimizde kullanacağımız MSSQL Server
veritabanı ve tablo yapımız aşağıdaki gibi olacak.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | CREATE TABLE [dbo].[Kullanıcı]( [id] [int] IDENTITY(1,1) NOT NULL, [ad] [nvarchar](50) NULL, [sifre] [nvarchar](50) NULL, [dogum] [datetime] NULL, [mail] [nvarchar](50) NULL ) GO SET IDENTITY_INSERT [dbo].[Kullanıcı] ON GO INSERT [dbo].[Kullanıcı] ([id], [ad], [sifre], [dogum], [mail]) VALUES (1, N'Murat ÖNER', N'1111', CAST(0x000081D500000000 AS DateTime), N'info@muratoner.net') GO INSERT [dbo].[Kullanıcı] ([id], [ad], [sifre], [dogum], [mail]) VALUES (2, N'Muhammed Emin Öztürkler', N'2222', CAST(0x000081D500000000 AS DateTime), N'emin.ozturkler@gmail.com') GO SET IDENTITY_INSERT [dbo].[Kullanıcı] OFF GO |
Bu örneğimizde Entity Wizard’ını kullanarak Entity Design’imizi otomatik olarak oluşturduk ardından Kullanıcı tablosuna ait sonradan eklediğimiz özellikleri Models klasörü altında Kullanici.cs
adlı sınıfımız içerisinde tanımladık.
Entity Wizard ile Entity Desing’imizi otomatik olarak oluşturduğumuzdan Kullanıcı.cs
adlı bir class zaten yer almaktadır o yüzden bir türkçe karakter avantajından yararlanarak sonradan dahil edeceğimiz kurallar için Kullanici.cs
sınıfı oluşturduk eğer Kullanıcı.cs
adlı bir sınıf oluştursaydınız Models klasörü içerisine zaten size böyle bir dosyanın varolduğunu üzerine yazılmasını isteyip istemediğinizi soracaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [MetadataType(typeof(KullanıcıValidaiton))] public partial class Kullanıcı { } public class KullanıcıValidaiton { [ScaffoldColumn(false)] public int id { get; set; } [Display(Name = "Ad Soyad")] public string ad { get; set; } [Display(Name = "Şifre"), DataType(DataType.Password)] public string sifre { get; set; } [Display(Name = "Doğum Tarihi")] [DisplayFormat(DataFormatString = "{0:d}")] public DateTime dogum { get; set; } [Display(Name = "Mail Adresi"), DataType(DataType.EmailAddress)] public string mail { get; set; } } |
Üstteki kodda yeni bir attribute dikkatinizi çekmiştir ScaffoldColumn attribute’ü ile modelimizi sayfaya eğer DisplayForModel HtmlHelper özelliğini kullanarak bastırıyorsak o zaman bu alan sayfaya bastırılmayacaktır tabi ScaffoldColumn attribute’üne false değerini verirsek ekrana bastırılmayacaktır.
Şimdi son olarak detay sayfasında DisplayForModel HtmlHelper’ini kullarak sayfanın nasıl bir görünüm ve çıktıya kavuşacağını görelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | @model MvcApplication1.Models.Kullanıcı @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Details</title> </head> <body> <fieldset> <legend>Kullanıcı</legend> @Html.DisplayForModel() </fieldset> <p> @Html.ActionLink("Edit", "Edit", new { id=Model.id }) | @Html.ActionLink("Back to List", "Index") </p> </body> </html> |
Sonuç
Üstte sonuç kısmındaki resimdede görmüş olduğunuz gibi [ScaffoldColumn(false)]
attribute’ünü kullandığım id alanı ekrana bastırılmadı dikkat etmeniz gereken nokta [ScaffoldColumn(false)]
attribute’ü sadece DisplayForModel()
HtmlHelper
‘i ile oluşturulan sayfalarda geçerli olmaktadır.