• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

ASP.NET MVC 5 Özel HTML Doğrulayıcısı (Custom HTML Validation)

ASP.Net MVC 5 de ValidationSummary methodunu Customize (Özelleştirerek) kendimize özgü bir method yazıyoruz. Custom Validation Özel Form doğrulayıcılar oluşturuyoruz.

28.02.2015

Yazar: Barış Ceviz (Google+)

Kategori: ASP.NET MVC

4771

Merhabalar, ASP.NET MVC 5 ile geliştirdiğimiz uygulamalarda oluşturduğumuz kayıt formları, içerik eklemeler ve daha bir çok formlarda oluşan hataları ekrana yazdırmak isteriz fakat bunları genellikle ViewBag kullanarak ve birden fazla satırlarla bir çok sayfada kullanıyoruz. Fakat bunun daha kolay yolları var :) Evet var. Kodlamayı kolaylaştıran basit kodlar. Ah o kadar olmasa programlama ya kopyala yapıştır ya da göz ferinin kaybına neden olurdu :) Neyse işe geçelim. Oluşturduğumuz formlarda @Html.ValidationSummary() ile formdaki işlemin sonucunu tasarıma uygun olarak olumlu veya olumsuz sonucu ekrana yazdırırız. Fakat sorun şu ki tasarım kodlarını eklemek ve birden fazla mesaj tipiniz var ise (Hata, Bildirim ve Uyarı gibi) bu durum çok zahmetli olacaktır. Bunun için yazacağımız kodlar sayesinde bu büyük derdi bir yardımcı class ve bir method ile çözeceğiz. Öncelikle tasarıma uygun kodlar yazacağımız için öncelikle tasarımımızda HTML bazlı neler gerektiğini bulmamız gerek. ASP.NET MVC 5 ile Rehberlik Servisi uygulaması geliştirirken bu class ı yazmıştım. Gelin tasarımda nasıl işliyor ve ben neler yapmışım. Aşağıda HTML ile bu uyarıları nasıl verdiğime bakayım


<div class="alert alert-success">
     Başarılı
</div>
<div class="alert alert-info">
     Üyeliğinizden çıkış yapmanız gerekebilir
</div>
<div class="alert alert-warning">
     Lütfen eksik alanları doldurunuz
</div>
<div class="alert alert-danger">
     Öğrenciyi eklerken bir hata oluştu
</div>

HTML Mesajlar  

Gördüğünüz gibi HTML çıktıları ve tarayıcıdaki görüntüsü bu şekilde. Tasarım tarafında eğer div in içerisi boş olmasına rağmen yine de ekranda boş olarak mesaj gözüküyor. En büyük sorunda budur aslında. Genellikle bu sorun tasarımcılar tarafından CSS ve JS ile çözülmektedir fakat eğer iyi derecede bilginiz yok ise veya uğraşmak istemiyorsanız. Front End Developer a yüklendi ise bu iş bu yöntem tam sizin için. Projenize sağ tıklayarak bir Helpers klasörü oluşturun ve içerisine HtmlHelpers adında bir class oluşturun. Class içerisinde şu kodları yazalım. Aşağıdaki verdiğim kodları yazmadan önce class ımızı static yapalım yani public static class HtmlHepers şeklinde olmalıdır. Sonrada verdiğim kodları class a dahil edebilirsiniz.

public static MvcHtmlString ValidationSummaryEx(this System.Web.Mvc.HtmlHelper helper, string mesaj = "", string mesajtipi = "")
        {
            try
            {
                string baseMsg = "<div class='alert alert-{0}'>{1}</div>";
                if (helper.ViewData.ModelState.Keys.Contains("Başarılı"))
                {
                    return new System.Web.Mvc.MvcHtmlString(String.Format(baseMsg, "success", helper.ViewData.ModelState["Başarılı"].Errors.First().ErrorMessage));
                }
                else if (helper.ViewData.ModelState.Keys.Contains("Hatalı"))
                {
                    return new System.Web.Mvc.MvcHtmlString(String.Format(baseMsg, "danger", helper.ViewData.ModelState["Hatalı"].Errors.First().ErrorMessage));
                }
                else if (!string.IsNullOrEmpty(mesaj) && !string.IsNullOrEmpty(mesajtipi))
                {
                    return new System.Web.Mvc.MvcHtmlString(String.Format(baseMsg, mesajtipi, mesaj));
                }
            }
            catch { }
            return new System.Web.Mvc.MvcHtmlString("");
        }

aynı zamanda namespace ProjeAdi.Helpers ı namespace ProjeAdi olarak ayarlamayı da tavsiye ederim. using bölümüne bu kodu ekleyelim.

using System.Web.Mvc;

Artık sınıfımız hazır. Şimdi biraz yazdığımız kodlardan bahsedeyim. Bu bir extension (eklenti, ek) methoddur. @Html. noktaya bastığınız anda Visual Studio bu kodu da görecektir. ValidationSummary ve ValidationSummaryEx olarak burada iki farklı mesaj tipi ekledim fakat siz bunu istediğiniz gibi arttırabilirsiniz. Aynı zamanda tasarımınıza göre değiştirebilirsiniz. Kod tarafında bir hata oluştuğunda HTML çıktısı olarak aktarmak istediğimizde ModelState.AddModelError methodu yardımı ile bu hatayı ekleriz. Burada bu method ile eklenmiş olan mesajları alır ve key değerine göre mesajın tipini öğreniriz. Böylelikle HTML çıktısını buna göre hazırlamış oluruz. MvcString Razor Engine ile gelen bir sınıftır. MvcString ile .cshtml dosyalarına sorunsuz bir şekilde HTML derleyebiliriz. Şimdi bunu ekledikten sonra gelelim tasarımda nasıl yerleştireceğimize. Gerçekten çok basittir.

@Html.ValidationSummaryEx()

İşte bu kadar. Bu kodu eklediğinz yere otomatik olarak kod tarafından gelen mesajları yazdıracaktır. Ek olarak belirlediğiniz mesaj tiplerine göre de manuel olarak da mesaj verebiliyorsunuz. Örnek olarak aşağıdaki koda bakabilirsiniz.

@Html.ValidationSummaryEx("İşleminiz başarılı bir şekilde gerçekleşti","Başarılı")

Bu şekilde de manuel mesaj verebilirsiniz. Şimdi peki otomatik olarak kullanıyoruz ve biz bu mesajları kod tarafında nasıl dinamik olarak ekleyeceğiz? sorusuna hemen cevap verelim. OgrenciEkle adında bir form sayfam olduğunu düşünelim ve yazdığım kodlar şunlar olacaktır. Kullanacağınız Controller ı açın ve içerisine eğer 2 den fazla mesaj tipiniz var ise aşağıdaki kodu yazınız.

private void MesajYazdir(string mesaj,string mesajtipi)
{
	ModelState.AddModelError(mesajtipi,mesaj);
}

Eğer benim projemde ki gibi iki tane mesaj tipiniz var ise şu şekilde de yapabilirsiniz.

        private void HataMesaji(string mesaj)
        {
            ModelState.AddModelError("Hatalı", mesaj);
        }

        private void SonucMesaji(string mesaj)
        {
            ModelState.AddModelError("Başarılı", mesaj);
        }

Son olarak da kullanımları da çok basittir. Örnek olursa HttpPost kabul eden bir OgrenciEkle Action ında kullanalım ve görelim.

        [HttpPost()]
        public ActionResult OgrenciEkle(Ogrenciler model)
        {
            if (ModelState.IsValid && model != null)
            {
                if (!Context.OgrenciEkle(model))
                {
                    HataMesaji("Öğrenci Eklenemedi. Bir Hata Oluştu");
                    return View(model);
                }
                else
                {
                    SonucMesaji(model.AdiSoyadi + " öğrenci listesine başarılı bir şekilde kaydedildi");
                }
            }
            return View();
        }

Evet gördüğünüz gibi bu şekilde kullanılmaktadır. Bu yazımda bu kadar umarım sorunlarınıza cevap olmuşumdur.

Yazar Hakkında

Barış Ceviz

Barış Ceviz

www.barisceviz.com/

Full Stack Developer

Sosyal Medya

ORANLAR

  • 4771izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...
  • Merhaba download linki çalışmıyor. Rica et...
  • Nevzat Bey selamlar, Açıkçası bizler a...
  • Parametreleri Cache İşleminden Yalıtma kon...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 120002
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 65047
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 48254
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ