56 messaggi dal 26 agosto 2002
www.klub01.com
sto cercando di creare una classe PageTemplate che eredita direttamente da Page in modo da inserire al suo interno le operazioni comuni a tutte le pagine.
fatto questo ogni pagina del mio sito erediterà da PageTemplate ma mi sembra che non funzioni.
--------------
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

class PageTemplate : Page
{
// codice comune alla pagine
}
-----
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
class Home : PageTemplate
{
// codice della sola pagina home.aspx
}
-------------
ma mi da errore.
è perchè devo prima compilare la classe PageTemplate in modo da avere una assembly PageTemplate.dll da inserire nella directory bin?
quindi la classe da cui eredito deve essere compilata?
che errore ricevi?

se usi il VS 2003 basta che il file *.cs sia presente in qualsiasi sottocartella del sito, e verrà compilato in un unico assembly
insieme ai vari codebehind delle pagine

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
56 messaggi dal 26 agosto 2002
www.klub01.com
dunque dunque ho fatto dei cambiamenti:

-------------------------------
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace PageTemplate
{
public class myPage : Page
{
}
}

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using PageTemplate;

class Home : myPage
{
}
---------------------
e naturalmente è cambiato l'errore;
--------------------
Messaggio di errore del compilatore: BC30456: 'CreateResourceBasedLiteralControl' non è un membro di 'ASP.home_aspx'.

Errore nel codice sorgente:
Riga 1: <%@ Page Inherits="Home" src="Home.cs" ContentType="text/html" ResponseEncoding="iso-8859-1" Debug="true"%>
Riga 2:
anche se non credo centri con l'errore se usi il VS 2003 src viene ignorato in favore di Inherits

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
56 messaggi dal 26 agosto 2002
www.klub01.com
mi sa proprio che hai ragione, infatti ho cambiato la direttiva della pagina.

prima era
<%@ Page Inherits="Home" src="Home.cs" ContentType="text/html" ResponseEncoding="iso-8859-1" Debug="true"%>

mentre quella che funziona è:

<%@ Page src="Home.cs" ContentType="text/html" ResponseEncoding="iso-8859-1" Debug="true"%>

in pratica ho levato l'attributo Inherits=""

ora faccio latre prove, grazie
di nulla, comunque il VS 2003 ti porta ad utilizzare Inherits.
ho provato in ufficio ma non sono riuscito a riprodurre il tuo messaggio d'errore.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
56 messaggi dal 26 agosto 2002
www.klub01.com
ti posto la soluzione che ho adottato, magari ne trovi di meglio ma può essere una base:

home.aspx:
------------------------------
<%@ Page Language="C#" Inherits="Home" src="Home.cs" ContentType="text/html" ResponseEncoding="iso-8859-1" %>

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>gpleone</title>
</head>
<body>
-- <asp:Label ID="testo" runat="server"></asp:Label><br />
-- <asp:Label ID="newtesto" runat="server"></asp:Label>
</body>
</html>
-----------------------------
home.cs
----------------------------using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using PageTemplate;

public class Home : myPage
{
public Label newtesto;

public string scrivi()
{
return "scrivi() da Home.cs";
}

protected void Page_Load(object Src, EventArgs E)
{
main();
newtesto.Text = "io sono newtesto dichiarato in home , ... ";
newtesto.Text += scrivi(" ... anch'io");
newtesto.Text += scrivi("... e anche io!!!!!!");
testo.Text = scrivi("io sono testo");
}
}
---------------------------------
PageTemplate.cs >>>>> compilato:
----------------------------------
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace PageTemplate //namespace
{
public class myPage : Page //dichiarazione della classe
{
public Label testo;
public void main()
{
testo.Text = "... vengo da PageTemplate!!!!!!";
}

public string scrivi(string txt)
{
return "bla bla bla - "+txt;
}
}
}
-------------------------------------
così funziona

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.