Posted under ASP
Bu yazımda place holder kontrolü kullanarak bir user control’un webformuna nasıl eklenebileceğini ve bu yöntemin bize ne avantajlar sağlayabileceğini açıklamaya çalışacağım.
Bir user contol oluşturup bu user contol’ü sürükle bırak metodu ile projemizdeki bütün web formlarına (aspx sayfaları) taşıdığımızda User Control de yaptığımız işi (örneğin bu, sitenin bütün linklerini listelemek ve linklere tıklandığında kullanıcıyı ilgili url ye yönlendirmek olabilir) projemizdeki tüm web formlarında ayrı ayrı tekrar yapmaktan kurtulmuş oluruz . User contol sayfasında yaptığımız güncelleme tüm projeyi aynı anda etkiler. peki biz bir sayfada id si 1 olan linkleri, başka bir sayfada da id si 2 olan linkleri listeleyeceksek her durum için ayrı bir user contol sayfası mı tasarlayacağız. Elbette hayır. Burada devreye Place Holder kontolü giriyor.
Hemen uygulamaya geçelim. Kodlarla ilgili açıklamayı sayfanın sonunda yapacağım.
Yeni bir proje açalım ve adını WebApplication1 olarak ayarlayalım. Bir Place Holder kontrolünü de sayfamıza yerleştirelim. Daha sonra projemize yeni bir User Control sayfası ekleyelim ve adını da ust.ascx olarak ayarlayalım. Ust.ascx sayfamıza bir label kontolü taşıyalım. ust ascx.cs kod sayfasına aşağıdaki kodları ekleyelim.
| namespace WebApplication1 {
} |
Projeyi kaydedin. ve webform1.aspx.cs kod sayfasını açalım. ve aşağıdaki kodları ekleyelim.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebApplication1
{
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.PlaceHolder PlaceHolder1;
private void Page_Load(object sender, System.EventArgs e)
{
Control MyContol = LoadControl(”ust.ascx”);
/* contol türünden MyContol değişkenini taımlıyoruz ve LoadContol metoduna ascx
sayfasının pathini parametre olarak veriyoruz */
PlaceHolder1.Controls.Add(MyContol);
((ust) MyContol).isim=”Tolga”;
/* burada “ust” ust.ascx in class ismidir. ust.isim public stringine “Tolga” değerini
atadık. böylece ust.isim public stringinin set bloğu ust.IsimPrivate private stringinin
değerini Tolga olarak değiştirdi.
*/}
}
}