2009-08-18 12 views
5

Après avoir converti un site Web Asp.net en application Web, l'erreur «Type MyNameSpace.MyMaster is not defined» s'affiche sur les pages utilisant la directive MasterType.Problème MasterType après la conversion d'un projet Web ASP.Net WebSite en projet d'application Web

par exemple Dans le fichier Dans le designer.vb fichier ASPX

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

le code suivant est généré et a l'erreur décrite ci-dessus:

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

Si je supprime l'espace de noms l'erreur va loin mais ce code est régénéré chaque fois que je fais un changement à la page aspx. Si j'utilise TypeName sans l'espace de noms (par exemple Typename = "MyMaster") au lieu de VirtualPath dans la directive, le code est généré sans la référence d'espace de noms et donc sans erreur. Cependant, cela échoue à l'exécution à la place. Y compris l'espace de noms se comporte de la même manière que l'utilisation de VirtualPath.

Je suis assez sûr que cela a quelque chose à voir avec le processus de conversion car les nouveaux projets d'applications Web n'ont pas ce problème.

Des idées ce qui se passe ici?

MISE À JOUR:

Problème résolu!

Lors du processus de conversion, j'avais ajouté un espace de noms portant le même nom que mon espace de noms racine à une classe. Simplement enlevé cela pour résoudre le problème.

+1

Vous pourriez vouloir recréer le maître page/code-behind à partir de zéro. Copiez ensuite les annotations et les codes. Cela ne répond pas à votre question mais devrait résoudre votre problème. –

+0

J'ai trouvé mon problème d'espace de noms en faisant une recherche pour: namespace Namespace –

Répondre

0

Problème résolu!

Lors du processus de conversion, j'avais ajouté un espace de noms portant le même nom que mon espace de noms racine à une classe. Simplement enlevé cela pour résoudre le problème.

1

Vous pouvez nommer votre classe de masterpage. Les espaces de noms sont créés par défaut dans les projets d'application Web.

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

     } 
    } 
} 

Lisez ceci pour découvrir tout autre gotchas:

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

+0

Cela ne change rien - le même problème se produit, juste avec l'espace de noms supplémentaire maintenant. –

0

changement

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

à

<%@ MasterType TypeName="Mastername" %> 

cela fonctionnera parfaitement

Questions connexes