2009-08-18 9 views
5

Dopo aver convertito un sito Web Asp.net nell'applicazione Web, viene visualizzato l'errore "Tipo MyNameSpace.MyMaster non è definito" nelle pagine che utilizzano la direttiva MasterType.Problema MasterType dopo la conversione da ASP.Net WebSite al progetto Web Application

esempio Nel file aspx

<%@ MasterType VirtualPath="~/MyMaster.master" %> 

Nel designer.vb File il seguente codice viene generato e ha l'errore descritto in precedenza:

Public Shadows ReadOnly Property Master() As MyNameSpace.MyMaster 
    Get 
     Return CType(MyBase.Master, MyNameSpace.MyMaster) 
    End Get 
End Property 

Se rimuovo il namespace l'errore va via ma questo codice viene rigenerato ogni volta che apporto una modifica alla pagina di aspx.

Se utilizzo TypeName senza lo spazio dei nomi (ad es. Typename = "MyMaster") anziché VirtualPath nella direttiva, il codice viene generato senza il riferimento allo spazio dei nomi e quindi nessun errore. Tuttavia questo non funziona in fase di runtime. Includere lo spazio dei nomi si comporta allo stesso modo dell'utilizzo di VirtualPath.

Sono abbastanza sicuro che questo ha qualcosa a che fare con il processo di conversione come i nuovi progetti di applicazioni web non hanno questo problema.

Qualche idea cosa sta succedendo qui?

UPDATE:

Problema risolto!

Nel processo di conversione avevo aggiunto un Namespace con lo stesso nome del mio Namespace radice a una classe. Semplicemente rimosso per risolvere il problema.

+1

si potrebbe desiderare di ricreare la pagina master/code-behind da zero. Quindi copiare i markup e i codici. Questo non risponde alla tua domanda, ma dovrebbe risolvere il tuo problema. –

+0

Ho trovato il mio problema dello spazio dei nomi effettuando una ricerca per: namespace Namespace –

risposta

0

Problema risolto!

Nel processo di conversione avevo aggiunto un Namespace con lo stesso nome del mio Namespace radice a una classe. Semplicemente rimosso per risolvere il problema.

1

È possibile assegnare un nome alla classe della pagina principale. I namespace sono creati di default nei progetti di app web.

namespace TestNS 
{ 
    public partial class TestMP : System.Web.UI.MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
    } 
} 

Leggi questo per scoprire tutti gli altri trucchi:

http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx

+0

Ciò non cambia nulla: lo stesso problema si verifica, proprio ora con lo spazio dei nomi extra. –

0

Change

<%@ MasterType VirtualPath="~/Mastername.master" %> 

a

<%@ MasterType TypeName="Mastername" %> 

questo funzionerà perfettamente