37 messaggi dal 12 agosto 2003
ciao a tutti,
ho la necessità di creare uno user control generale "BoxMaster", da cui altri user control possono ereditare aspetto e comportamento.
ho trovato molto utile le masterpages su aspitalia e l'ho leggermente modificata per adattarla a usercontrols.
quindi ho fatto così:

1) ho definito una classe masterbox

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Collections.Specialized;
using System.Web.UI.HtmlControls;

namespace WebGalleria.Master
{
public class MasterBox: UserControl
{
private Control master;
private string MasterPageFile = "~/Master/BoxMaster.ascx";

// sovrascrivo l'evento di Render della pagina
protected override void Render(HtmlTextWriter writer)
{
// prova a leggere da file di config
//LoadFromConfigFile();

// user control master
master = this.LoadControl(MasterPageFile);

// estraggo i PlaceHolder
Type pnlType = (new PlaceHolder()).GetType();

for (int i=0; i<=this.Controls.Count-1; i++)
{
if (this.Controls[i].GetType() == pnlType)
CheckControl((PlaceHolder)this.Controls[i], this.Controls[i].ID);
}
// aggiungo l'user control alla pagina
this.Controls.Clear();
this.Controls.AddAt(0, master);
// per forzare i controls all'interno
base.Render (writer);
}

void CheckControl(PlaceHolder pnl, string ID)
{
// cerco il control
Control control = master.FindControl(ID);
if (control != null)
{
// togliamo il control e lo riaggiungiamo
int i = master.Controls.IndexOf(control);

pnl.ID = "mastertemplate_" + ID;
master.Controls.RemoveAt(i);
master.Controls.AddAt(i, pnl);
}
}
}
}

2) ho creato BoxMaster.ascx che contiene i vari placeholder.
fin qui tutto bene...ho provato a creare uno usercontrol "Box" che eredita da MasterBox e la visualizzazione è perfetta.

il problema è uno e grosso: in BoxMaster.ascx, nel codebehind, avevo definito delle proprietà pubbliche(get, set) per recuperare e settare alcune proprietà dei controlli contenuti in BoxMaster. ma queste proprietà non sono visibili in "Box", visto che questa implementazione delle master page funziona considerando i placeholder presenti nell'html.

la mia domanda è: come posso sfruttare questa implementazione delle master page per far si che, oltre ai vari placeholder, vengano ereditate anche le proprietà pubbliche(get, set) definite nello usercontrol master?

spero di essere stato chiaro.

grazie.
Non capisco molto come hai organizzato il tutto, un po' per i nomi simili, un po' perché hai messo la logica che fa il replace nell'uc invece che nella page.
Guarda gli esempi del RealCodeDay
http://www.dotnetcircle.it/demo/firenze05/DotNetCircle.WareHouse.WebSite.zip

Ho usato una masterpages e accedo dalle pagine alle proprietà pubbliche della masterpage per cambiare il titolo e cose simili

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.