28 Ekim 2010 Perşembe

TextBox Kontrolu

TextBox Kontrolu html sayfamızda metin giriş işlemleri yapmamızı sağlar. Bu üç şekilde olabilir. Vasrsayılan olarak TextMode Single değeri ile metin girişi; TextMode Password değeri ile şifre girşi; TextMode Multiline değerinin sunduğu çoklu satır ile bir text alanı girişi sağlanır.




<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>


Özellikleri


Autopostback : Bu özellik True olduğu zaman TextBox içeriğinde herhangi bir değişiklik olursa içinde bulunduğu formu otomatik gönderir.


Columns  : Bu özellik ile TextBox'ın yatay genişliği karakter olarak belirlenebilir.


MaxLength : Bu özellik girilebilecek karakter sayısını belirler. Multiline özelliği ile birlikte çalışmaz.


Readonly : Bu özellik True olduğu zaman TextBox yalnızca okunabilir olur. Düzenleme ve ekleme yapılamaz.


Rows : Bu özellik ile çok satırlı TextBox'ın satır sayısı belirlenir. TexBox'ın
       TextMode="MultiLine" özelliği belirtilmiş olmalıdır.


Text : Bu özellik ile TextBox içinde bir metin görüntülenebilir.


TextMode : TextBox'ın nasıl görüntüleneceğini belirtir. Multiline(Çok Satırlı) Password(şifre) SingleLine(Tek Satır) değerleri verilebilinir. SingleLine seçmesenizde standarttır.


Wrap : Eğer True ise kelime kaydırma etkinleştirilir. Varsayılan olrak True değerlidir.


Metotlar


OnTextChanged : Bu mtetot ile TextChanged olayı üretilir.




Örnek: Page_Load yordamı her zaman TextChanged olayından önce çalışır.



<%@ Page Language="C#" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    void Page_Load()
    {
      
    }

    void TextBox1_TextChanged(object s, EventArgs e)
    {
        Response.Write("Textbox1 içeriği değiştirildi.");
           
    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Deneme</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"  TextMode="MultiLine" Rows="10" Wrap="true" OnTextChanged="TextBox1_TextChanged"></asp:TextBox> 
           <asp:Button runat="server" Text="bas" />
    </div>
    </form>
</body>
</html>


Örnek2:


AutoPostBack="true" değerini verdiğimiz zaman herhangi bir butona basmamıza da gerek kalmaz. Textbox içeriği değiştikten sonra pasif duruma geçer geçmez içeriği gönderecektir.



        <asp:TextBox ID="TextBox1" runat="server"  TextMode="MultiLine" Rows="10"  OnTextChanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>  


Request Validation

Bu özellik cross-site scripting (xss) gibi saldırılara karşı korunmak için varsayılan olarak aktiftir. Konuyu biraz daha açarsak; bu özellik html taglarının çalışmasını engeller. Bu sayede bir çok bilginin istemediğimiz bir şekilde paylaşılmasını engelleriz. Aksi halde bu taglar ile tehlikeli javascript kodları çalıştırılabilinir.

Bu kodu gönderdiğimizde varsayılan olarak aşağıdaki uyarıyı alırız.

Asp.net 1.1 ve Asp.net 2.0 bu özelliği devre dışı bırakabilmemiz için sayfa seviyesinde ve uygulama seviyesinde olmak üzere 2 yöntem mevcuttur. 

Sayfa seviyesinde :
<%@ Page Language="C#"  ValidateRequest="false" %>

Uygulama Seviyesinde Web.config dosyamızı düzenliyoruz. Böylelikle hiyerarşik olarak tüm sayfalarımızda bu ayarlar geçerli oluyor. Tabi eğer hiyerarşideki tüm sayfa ve klaörlerde farklı bir ayar sayfa ve uygulama seviyesinde mevcut değil ise :



<?xml version="1.0"?>

<configuration>
  <appSettings file="appSettings.xml" />
  <connectionStrings/>
  <system.web>
    <pages validateRequest="false" />
    <compilation debug="true"/>
  </system.web>
</configuration>

Artık html taglarını herhangi bir hata almadan gönderebiliriz.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    void Button1_Click(Object sender,EventArgs e)
    {
       Label1.Text = TextBox1.Text;
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title>Deneme</title></head>
<body>
<form id="form1" runat="server"><div>
        <asp:TextBox ID="TextBox1" runat="server" width="400"></asp:TextBox>
        <asp:Label ID="Label1" runat="server" /> 
        <asp:Button ID="Button1" runat="server" Text="Gönder" OnClick="Button1_Click" />
</div></form>
</body>
</html>

Gördüğümüz gibi javascript kodumuz çalışıyor.





Hiç yorum yok:

Yorum Gönder