Daha önceki makalemizde ASP.NET MVC DisplayTemplates’i görmüştük bunun ondan tek farkı ise Edit yani düzenleme modundaki input nesnelerine özel olarak şablon tanımlamaları yapabilmekteyiz makale devamında örnekler ile daha iyi anlayacaksınızdır.
ASP.NET MVC ile EditorTemplates nedir ve kullanımı
Örneğimizde Kullanacağımız MSSQL Server kodumuz ise aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | DROP TABLE [Kullanıcı] GO 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, [site] [nvarchar](50) NULL ) GO SET IDENTITY_INSERT [dbo].[Kullanıcı] ON GO INSERT [dbo].[Kullanıcı] ([id], [ad], [sifre], [dogum], [mail], [site]) VALUES (1, N'Murat ÖNER', N'1111', CAST(0x000081D500000000 AS DateTime), N'info@muratoner.net', N'http://www.muratoner.net') GO INSERT [dbo].[Kullanıcı] ([id], [ad], [sifre], [dogum], [mail], [site]) VALUES (2, N'Muhammed Emin Öztürkler', N'2222', CAST(0x000081D500000000 AS DateTime), N'emin.ozturkler@gmail.com', N'http://www.muhammedeminozturkler.com') GO SET IDENTITY_INSERT [dbo].[Kullanıcı] OFF GO |
Entity Design’imizi kolaylık olsun diye Entity Wizard ile oluşturuyoruz ardından kullanıcı tablomuza ait kontrol ve validationlar için Models klasörü altına Kullanici.cs adından bir sınıf oluşturup ardından sınıf içeriğini aşağıdaki gibi düzenleyiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | [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; } [DataType(DataType.Url), Display(Name = "Site")] public string site { get; set; } } |
EditorTemplates’i anlatmak için DateTime DataType elemanını kullanarak örnek vermeye çalışacağım şimdi yapmamız gereken Shared Klasörü Altında EditorTemplates adında yeni bir klasör oluşturmak ardından bu klasör altında DateTime elamanını kullandığımız için aynı isimlendirme ile DateTime.cshtml adında bir view dosyası oluşturuyoruz. DateTime.cshtml adındaki dosyamızın içeriğini aşağıdaki şekilde düzenleyin.
DateTime.cshtml
1 2 | @model DateTime? @Html.TextBox("", Model.HasValue ? Model.Value.ToString("dd/MM/yyyy") : "", new { @class = "date" }) |
Edit.cshtml sayfasına ait kod ise aşağıdaki şekildedir.
Edit.cshtml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | @model MvcApplication1.Models.Kullanıcı @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Edit</title> </head> <body> <link href="~/Content/Site.css" rel="stylesheet" /> <link href="~/Content/themes/base/jquery.ui.all.css" rel="stylesheet" /> <script src="~/Scripts/jquery-1.6.1.min.js"></ script> <script src="~/Scripts/jquery-ui-1.8.11.min.js"></ script> <script src="~/Scripts/jquery.validate.min.js"></ script> <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></ script> <script> $(function() { $("input:text.date").datepicker({ format: "dd/MM/yyyy" }); }) </ script> @using (Html.BeginForm()) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) <fieldset> <legend>Kullanıcı</legend> @Html.EditorForModel() <p> <input type="submit" value="Save" /> </p> </fieldset> } <div> @Html.ActionLink("Back to List", "Index") </div> </body> </html> |
Burada sonuç olarak yapmaya çalıştığımız şey DateTime türündeki dogum alanı için Tarih seçim penceresi çıkarabilmek bunu sağlayabilmek için ise jquery-ui kütüphanesinden faydalanıyoruz üstteki script ve link etiketlerini aşağıdaki görüntüye ulaşabilmek için kullanmalısınız.
Edit.cshtml sayfasında son script etiketinde class değeri date olan ve text türündeki input nesnelerine tarih seçim penceresinin çıkması için gerekli kod yazılmıştır.
İçerik aslında var fakat ufak bir sözdizimi sorunundan dolayı gösterim sağlanmıyordu sorun giderildi. Geri dönüş içinde teşekkürler.