Html elemanları, Asp.net Kontrolü olarak kullanmak
Asp.net ile web siteleri geliştirirken bazı durumlarda Asp.net kontrolü yerine ona karşılık gelen Html elemanını kullanmak esneklik sağlayabilir.
Asp.net kontrolleri arasında yer alan LinkButton, Html içinde <a> elemanına dönüşüyorsa,
Asp.net kontrolleri arasında yer alan Panel, Html içinde <div> elemanına dönüşüyorsa,
Bu durumda tasarım tarafında kullanılmış bir Panel kontrolüne kod tarafında
panelDeneme.Attributes.Add(“style”,”display:none;”); şeklinde bir özellik atayabiliriz. Bu ne işe yarar?
Örneğin Asp.net kontrollerinin Visible.false özelliğine bağlı kalmadan Javascript ile göster-gizle yapmak istediğimiz durumlarda yukarıdaki kod işimizi çözmüş olur. Çünkü kontrollerin visible.false özelliği, yapmak istediğimizle birebir aynı sonucu vermemekte. Visible.false verilen kontrol Html kaynağında üretilmemiş oluyor. Bizim istediğimiz ise Html kaynakta bulunan bir elemanın tarayıcıda gizli olması ya da tam tersi görünüyorken gizlenmesi.
Tersten gidecek olursak:
Sayfaya Html olarak yazılan
<a href=”Deneme.aspx”>Deneme</a> elemanını,
<a id=”linkMenu” runat=”server” href='<%#Eval("SayfaUrl") %>'><%#Eval("SayfaAd") %></a> şeklinde değiştirerek (yani runat=”server” ve bir id tanımı ekleyerek) Kod tarafında bir Asp.net kontrolü gibi kullanabiliriz. Burada yapmak istediğim linkMenu isimli <a> elemanını Asp.net Repeater kontrolü içinde kullanmak ve kullanıcı tarafından tıklanan menünün seçili olmasını(stilinin değişmesini) sağlamak.
Asp.net Repeater kontrolünün OnItemDataBound olayı içinden <a> elemanımıza erişelim.
protected void repeatMenu_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
try
{
HtmlAnchor linkMenu = e.Item.FindControl("linkMenu") as HtmlAnchor; //eriştik
}
catch (Exception)
{
}
}
Kullanıcının tıkladığı sayfa açıldığında ilgili <a> elemanını seçili yapalım.
protected void repeatMenu_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
try
{
string menuSayfaId = DataBinder.Eval(e.Item.DataItem, "SayfaId").ToString();
string cagrilanSayfaId = SayfaBilgi(cagrilanSayfaUrl); //çağrılan sayfaUrl sinden Id bilgisi bulundu varsaydık.
//seçileni aktif yap
if (cagrilanSayfaId == menuSayfaId)
{
HtmlAnchor linkMenu = e.Item.FindControl("linkMenu") as HtmlAnchor;
linkMenu.Attributes.Add("style", "color: #e06c5f; background-color: #eeeff3;");
}
}
catch (Exception)
{
}
}
Hangi Html elemanın Asp.net’te nasıl çağrılacağı ile ilgili (burada <a> elemanı HtmlAnchor şeklinde çağrıldı) tutorialspoint.com adresinde bulduğum içerik şu şekilde;
Control Name | HTML tag |
---|---|
HtmlHead | <head>element |
HtmlInputButton | <input type=button|submit|reset> |
HtmlInputCheckbox | <input type=checkbox> |
HtmlInputFile | <input type = file> |
HtmlInputHidden | <input type = hidden> |
HtmlInputImage | <input type = image> |
HtmlInputPassword | <input type = password> |
HtmlInputRadioButton | <input type = radio> |
HtmlInputReset | <input type = reset> |
HtmlText | <input type = text|password> |
HtmlImage | <img> element |
HtmlLink | <link> element |
HtmlAnchor | <a> element |
HtmlButton | <button> element |
HtmlForm | <form> element |
HtmlTable | <table> element |
HtmlTableCell | <td> and <th> |
HtmlTableRow | <tr> element |
HtmlTitle | <title> element |
HtmlSelect | <select> element |
HtmlGenericControl | All HTML controls not listed |