CheckBox display=”none” sorunu

Javascript kodları ile checkbox nesnesi görünmez yapmak için display özelliğinden yararlanırız. Ancak bu özellik label ve textbox ile olan kullanımdan biraz farklıdır. Örn ;

 document.getElementById(“<%= TextBox1.ClientID %>”).style.display = “none”;

Yukarıdaki satır bir textbox veya label kontrolünü görünmez yapmak için yeterlidir. Fakat Aynı yöntemi checkBox’a uyguladığımızda checkbox textinin silinmediğini ve check işareti konulan kutucuğun kaybolduğunu göreceğiz. Tüm checkbox’ı görünmez yapmak için :

 document.getElementById(“<%= TextBox1.ClientID %>”).parentNode.style.display = “none”;

şeklinde bir kullanım işimizi görecektir.

Kolay gelsin

ASP.Net Html5 girilen değerleri sınırlama

Bazen kullanıcıdan textboxa sınırlı değer girmesini isteriz. Bu durumu karmaşık yollara sapmadan ve hızlı bir şekilde çözmek için Html5 özelliklerinden faydalanabiliriz. Bunun için aslında toolbox’ta yer alan Validation kontrollerinden yararlanabilirdik fakat bu kontroller server-Side çalıştığı için efektif değiller ve kod kalabalığına neden oluyorlar. En iyisi Html5‘in bu özelliğinden faydalanmak olacaktır. Html5 ile gelen tüm özellikler her tarayıcı tarafından desteklenmediği için yazdığımız kodları silip baştan yapmamak için dikkatli olmak lazım ama bu özellik kullanılabilir.

Şifreyi 6 karakter ile sınırlama
<asp:TextBox ID=”txbSifre” runat=”server”  TextMode=”Password” Width=”200px”
title=”Şifre en az 6 karakterli olmalıdır” pattern=”^.{6}$” > </asp:TextBox>

Şifreyi 6-10 arası karakter ile sınırlama

<asp:TextBox ID=”txbSifre” runat=”server”  TextMode=”Password” Width=”200px”
title=”Şifre en az 6 karakterli olmalıdır” pattern=”^.{6,10}$” > </asp:TextBox>

Asp.Net Javascript ile label ve textbox değerini değiştirmek

  1. Textbox çağrılır

     var test = document.getElementById(“<%= TextBox1.ClientID %>”);

    test.value = “İçerik”; //içerik değiştirilir

  2. Label çağrılır

    var test = document.getElementById(“<%= Label1.ClientID %>”); 

    test.InnerHtml  = “İçerik”; //içerik değiştirilir

Aradaki fark label kontrolüne değer verirken InnerHtml, textbox’ta ise value metodlarını kullanmaktır.

Not : Bazen verdiğimiz değerlerin kullanıcıya görünmesini istemeyiz. Bunun için properties tablosundan visible özelliğini false yapmamız yeterliydi. Ancak bu durumda Javascript kontrolümüzü tanımayacak veya görmeyecektir. Peki ne yapacağız ? Gizleme özelliğini JavaScript kodları içerisinden verirsek bu sorunu aşmış olur. Örn ;

Label1.style.display = “none”;

Kolay Gelsin

Html5 validation buton click sorunu

Html5 validation (doğrulama) kontrolleri bizi birçok Javascript kodu yazmaktan veya Ajax araçlarını kullanmaktan kurtaran mükemmel özelliklere sahiplerdir. Kullanımları oldukça basittir. Makalenin amacı bu olmadığı için detaya girmiyorum fakat bu konu hakkında güzel bir makale için linke göz atabilirsiniz.

http://www.codeproject.com/Tips/543391/HTML-for-Asp-net-Csharp-Developers

Html5 özellikerini kullanmak oldukça kolaydır. Özellikler Client-side çalıştığı için performans açısından çok etkilidir. Ancak en büyük sorunu farklı tarayıcılara olan uyumsuzluk problemidir. İnşallah tüm tarayıcılar en kısa zamanda entegre olurlar.
Bunun  yanında bir problem daha var ki bazen saç baş yoldurabilir. Sayfanızda farklı eventlere birden fazla buton varsa hangisine tıklarsanız tıklayın sizden validation kontrolü eklenmiş textbox doğrulaması istenecektir. Çözümü oldukça basit;

<asp:ImageButton ID=”ImageButton1″ runat=”server” formnovalidate=”formnovalidate” />

Kolay gelsin

Şifre birkaç kez yanlış girildikten sonra Captcha çıkarmak

Login formunda spam-botları engellemek için captcha kullanımı daha önce görmüştük. reCaptcha kullanımı linkine tıklayarak ilgili makaleye göz gezdirebilirsiniz. Şimdi de kullanıcı şifresi üç kere yanlış girildikten sonra captca doğrulmasının kullanılmasını görelim.

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>

<!DOCTYPE html>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head runat=”server”>
    <title></title>
</head>
<body>
    <form id=”form1″ runat=”server”>
    <div>
        <asp:TextBox ID=”TextBox1″ runat=”server”></asp:TextBox>
        <asp:Label ID=”Label1″ runat=”server” Text=”Label”></asp:Label>
    </div>
        <asp:TextBox ID=”TextBox2″ runat=”server”></asp:TextBox>
        <asp:Button ID=”Button1″ runat=”server” OnClick=”Button1_Click” Text=”Button” />
    </form>
</body>
</html>

Code Behined

using System;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lblResult.Visible = false;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        int c=1;
        if (TextBox1.Text == “sharad” && TextBox2.Text == “gupta”)
        {
            Response.Redirect(“a.aspx”);
        }
        else
        {
            lblResult.Visible = true;
            lblResult.Text = “Kullanıcı adı veya şifre hatalı”;
            Session[“counter”] = Convert.ToInt32(Session[“counter”] )+ c;
            if (Convert.ToInt32(Session[“counter”]) > 5)
            {
RecaptchaControl1.Visible = true;
RecaptchaControl1.Validate();
if (RecaptchaControl1.IsValid)
{
lblResult.Text = “OKEY”; return;
}

else
return;

            }
        }
    }
}
Biz burada değerimizi Session ile sakladık. Dilerseniz alternatif yöntemleri kullanabilirsiniz. Aşağıdaki linkte viewstate kullanımı bu alternatiflere bir örnektir.

POSTBACK ESNASINDA DEĞERLER NASIL SAKLANIR ? VİEWSTATE NEDİR ?

Postback esnasında değerler nasıl saklanır ? Viewstate nedir ?

Postback sorusu Asp.Net ile ilgili konuların en başında gelir. Postback işlemi gerçekleştiğinde (örn : bir formdaki butona tıklandığında) code-behind içerisinde yapılandırılan değişken değerler istemci taraflı sistem belleğinden (the memory of the client system) silinir. Bu konsept Windows-based (Windows tabanlı)  uygulamaların işleyişinden farklı çalışır. Windows tabanlı uygulamalarda oluşturulan değişken değerler serbest bırakılana kadar yada garbage collector (çöp toplayıcı) tarafından silinene kadar yada belli kodlar tarafından imha edilene ve sonlandırılana kadar bellekte kalmaya devam ederler.

Ancak web uygulamalarında değişken değerler kolayca yok olur. Fakat bunları saklamakta oldukça basittir. Viewstate nesnesi kullanarak kolayca saklayabiliriz. Postback çağırılmadan önce değişken değerler Viewstate nesnesinde saklanır. İstemci sayfada saklanan değer geri alınabilir. Aşağıdaki örnek kodda görebilrsiniz.

//Postback olmadan önce değer viewstate içinde saklanır
ViewState(“SomeVar”) = txtFirstName.text;

//Postback olduktan sonra saklanan değer çağrılır
String strFirstName = ViewState(“SomeVar”).ToString();

Burada dikkat edilmesi gereken husus, viewstate içerisinde saklanan değer Asp.Net tarafından gizli bir değişken şeklinde
diğer sayfalara taşınır. İdeal olan kullanım, datasetler gibi büyük veriler, viewstate içerisinde saklanmamaklıdır. Çünkü performansı düşürürler.

Kolay gelsin…