Tek olayımız, sınıfımızın webde görünmesi için onun Render gibi bir metoda ya da CreateChildControls diye başka bir metoda ihtiyacımız olmasıdır(CreateChildControls metodunu atıyorda olabilirim).
Sınıfımızı WebControl'den türettim ve içinde Render metodunu gördüm. Ona da ekranda görüldüğünde belli olsun diye birşeyler yazdım.
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Cem.Controls.WebKontrol
{
public class CemKontrol:WebControl
{
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
writer.Write("CEMMMMMM");
}
}
}
Şimdi bu sınıftan oluşan dll dosyamı (GAC'a yüklesem güzel olurdu ama çöplük değil GAC'ım) web application/web site projeme referanslıyorum(web site'da denemedim ama onada referanslarım herhalde).
Bu arada Render metodumuzdan biraz bahsedelim.
protected override void Render(HtmlTextWriter writer)
metodumuzun içinde this.Controls.Add(new Label(){ Text="<p style='color:orange'>Portakal Ağacı ektim buraya</p>" });
diyebiliriz. Ama bu Label'ın ekranda çıkması için base.Render(writer);
metod çağrısını en altta yapmamız gerekiyor.
Sonrada Default.aspx dosyamı aşağıdaki gibi düzenliyorum:
<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="Default.aspx.cs"
Inherits="WebApplication1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register Assembly="Cem.Controls.WebKontrol, Version=1.0.0.0, Culture=neutral, PublicKeyToken=026d3b7fdfbc431f"
Namespace="Cem.Controls.WebKontrol"
TagPrefix="cc" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc:CemKontrol runat="server" ID="ccccem" />
</div>
</form>
</body>
</html>
Sonuçta istediğimi aldım:
Şimdi birde CenkKontrol.cs isminde sınıf dosyasını DLL imize ekleyip web sayfamızda gösterelim:
Sonucumuz:
Bu durumda özetimizde Yunus Emre'den:
girdim ilim meclisine, eyledim kıldım talep
dediler ilim geride, illa edep illa edep.
Bu da güzel bir kaynak: Walkthrough: Creating a Web Custom Control