Yazılım Mimarileri ve Tasarım Desenleri Üzerine

Asp.NET Validation Kullanırken UnobtrusiveValidationMode Hatası

Bir yılı aşkın Asp.NET MVC mimarisine yoğunlaştığımdan dolayı haliyle Asp.NET mimarisiyle bazı kopuşlarımız olmuş.Teknik olarak ve Component kullanımında bir kaç adım geride kalmış olduğum bu mimarinin başına oturdum ve eski bilgilerimi tazeleyip, üstüne yeni yapılarıda ekleyeyim diyerek başladım örnek projeler yapmaya.Haliyle adım adım tazelenen bilgilerin eşliğinde Validation kullanmaya gelince beynim Error verdi 🙂 Çünkü UnobtrusiveValidationMode isimli bir hata geçmişte anımsadıklarım arasında yeri yoktu.Bende haliyle ya “Asp.NET mimarisinde Validation’lar ileri safhada yeni tekniklerle kullanılmaya başladı” ya da “değişen bir şey var işin yoksa otur öğren” gibisinden ön yargılarla panik yapmaya başladım.Velhasıl bir yenilik olmadığının farkına varıp hatanın sebebini anlayınca Asp.NET mimarisi üzerinde pek fazla kuşku kalmadı.Şimdi sizlere UnobtrusiveValidationMode hatasının çözümlerinden bahsedeceğim.Evet çözümlerinden diyorum çünkü sizlere sunacağım iki alternatif çözüm var.

Öncelikle hatayı görelim ardından hangi durumlarda bu hatayı aldığımıza daha detaylı değinelim.

Gördüğünüz gibi alınan hata bu.
Peki ne yapınca bu hatayı alıyoruz?
Aslında bu makaleye giriş esnasında çözümünü vereceğim hatanın Validation’lar dan olduğuna değinmiştik.Asp.NET mimarisinde herhangi bir Validation Componentini kullanırken bu hatayı alabilmeniz ihtimaller arasında.

Hatadan nasıl kurtulunur?
Asp.NET projeniz içindeki “web.config” dosyasını açınız.”” Node’ı arasına aşağıdaki gibi anahtar kodu ekleyiniz.

  <appSettings>
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
  </appSettings>

Gerçekleştirdiğiniz bu işlemden sonra hata %99 ihtimalle kalkacaktır.Ola ki hata kalmadı diğer alternatif çözüme başvurabilirsiniz.

Alternatif çözüme 2. sayfadan erişebilirsiniz.

Alternatif çözümü gerçekleştirebilmek için projenize Global.asax dosyasını eklemeniz gerekmektedir.Aşağıda bir Asp.NET projesine eklenmiş Global.asax dosyasının saf içeriği bulunmaktadır.

    public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {

        }
        protected void Session_Start(object sender, EventArgs e)
        {

        }
        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }
        protected void Application_Error(object sender, EventArgs e)
        {

        }
        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }

Bu dosyanın içinde gördüğünüz gibi “Application_Start” isimli bir metod bulunmaktadır.Bu metodun içine aşağıdaki kodları yerleştirmemiz yeterli olacaktır.

        protected void Application_Start(object sender, EventArgs e)
        {
            ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
            {
                Path = "http://code.jquery.com/jquery-1.10.2.min.js",
                DebugPath = "http://code.jquery.com/jquery-1.10.2.min.js",
                CdnPath = "http://code.jquery.com/jquery-1.10.2.min.js",
                CdnDebugPath = "http://code.jquery.com/jquery-1.10.2.min.js"
            });
        }

http://code.jquery.com/jquery-1.10.2.min.js linkinden JQuery dosyasını indirip projenizde attığınız dizinide gösterebilirsiniz.Bu alternatif çözümde JQuery ile hataya çözüm bulmuş oluyoruz.

İyi çalışmalar diliyorum…

Mobil sürümden çık