09 December 2016

Eski Kod Yazma ve Yeni Kod Yazma Arasındaki Farklar .Net

Eskiden asp kodları yazarken verileri server’a göndermek için form tagi kullanarak “post” veya “get” metodlarından birini tercih ediyorduk ve sayfalara inline kod yazıyorduk. Bu yaklaşımda çoğu zaman sayfalarımızda program kodarı ile html tasarımı birbirine karışıyor. Yeni kodlama şekilde ise Code-Behind Programlama yönetimini kullanıyoruz. Program kodumuz ayrı bir sayfada yer alıyor (veya dll’e referans veriyoruz).

Eski kodlama şekilnde servera veri göndermek istediğimizde aşağıdaki şekilde bir kodlama yapmamız gerekirdi:

HTML sayfamıza kodlarımızı yazalım:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title></title>
 <style>
 body
 {
 font-family:Tahoma;
 font-size:13px;
 }
 </style>
 </head>
 <body>
 <form method="get" action="ServerPage.aspx">Username:<br />
 <input id="txtUserName" name="txtUserName" type="text" /><br />Password:<br />
 <input id="txtPassword" name="txtPassword" type="text" /><br />
 <input id="btnSubmitForm" type="submit" value="submit" />
 </form>
</body>
 </html>

ServerPage.aspx dosyamıza kodlarımızı yazalım:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ServerPage.aspx.cs" Inherits="ASp.Net_sample.ServerPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
 <title>Server Page</title>
 </head>
 <body>
<h3>Server Page</h3>
 <%
 string userName = Request.QueryString["txtUserName"];
 string password = Request.QueryString["txtPassword"];
if (userName=="admin" && password=="123")
 {
 %>
 <span style="color:Blue">Giriş Başarılı</span>
 <%
 }
 else
 {
 %>
 <span style="color:Red">Giriş Başarısız</span>
 <%
 }
%>
 </body>
 </html>

Yukarıdaki örnekte “get” yerine “post” tercih edecek olursak

  <form method="post" action="ServerPage.aspx">

yazarak Request.QueryString[“txtUserName”]; satırlarını Request.Form[“txtUserName”]; olarak değiştirmemiz gerekir.

.Net’te kod yazarken yararlandığımız en büyük yeniliklerden biri Code-Behind programlamadır. Sayfamızın design kısmına sadece tasarımımızı oluşturup kodları ayrı bir kod penceresine yazıyoruz. Bu şekilde kodlarla tasarım birbirinden ayrılmış oluyor. Aynı zamanda server taraflı kod yazmış oluyoruz bu da bize büyük bir esneklik sağlamış oluyor.

Bir diğer yenilik ve avantaj ise ASP.NET kontrollerinin kendi durumlarını korumalardır. Bu kontroller üzerlerindeki veriyi saklayabiliyorlar. Bunun için de gizli bir viewstate yapısı kullanılıyor. Daha fazla bilgi:  ASP.Net ViewState

Sayfamıza aşağıdaki kodları yazıp çalıştırdığımızda HTML kodlarının durumlarını koruyamadıklarını çok net bir şekilde görebiliyoruz.

<input id="Text1" type="text" />
 <input id="Submit1" type="submit" value="submit" />
 <hr />
 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
 <asp:Button ID="Button1" runat="server" Text="Button" />

Bir diğer yenilik ise Postback mekanizmasıdır. Postback işlemi istemci bilgisayarda web formlarıyla çalışma esnasında olayın oluşmasıyla başlayan bir postalama işlemidir. Bu konu ile ilgili daha fazla bilgi:  PostBack Konusu

protected void Page_Load(object sender, EventArgs e)
 {
 if (!Page.IsPostBack)
 {
 DropDownList1.Items.Add("Yazılım Uzmanı");
 DropDownList1.Items.Add("Berber");
 DropDownList1.Items.Add("Kasap");
 }
}
protected void Button1_Click(object sender, EventArgs e)
 {
 lblMeslek.Text = DropDownList1.SelectedValue;
 }

Ve son olarak da HTML kontrollerini runat=”server” attribute ekleyerek server tabanlı çalıştırabilmemiz de gelen yeniliklerdendir.