53 votes

La déclaration incorporée ne peut pas être une déclaration ou une déclaration étiquetée.

J'essaie de créer un utilisateur en utilisant claim identity asp.net. J'obtiens cette erreur lors de la création de l'utilisateur claim identity.

  ApplicationUser user = new ApplicationUser { 
                        EmailConfirmed = true, 
                        UserName = model.myUser.Email,
                        Email = model.myUser.Email ,
                        PhoneNumber = model.myUser.PhoneNumber,
                        PhoneNumberConfirmed = true,
                        UserImagePath = model.myUser.UserImagePath,
                        FirstName= model.myUser.FirstName,
                        LastName = model.myUser.LastName,
                        DateOfBirth = model.myUser.DateOfBirth,
                        Culture = model.myUser.Culture,
                        Role = model.myUser.Role
                    };

mais quand le code a été

var user= new ApplicationUser { 

                            UserName = model.myUser.Email,
                            Email = model.myUser.Email ,

                        };

il a fonctionné parfaitement, donc je veux savoir ce qui ne va pas.

136voto

felix-b Points 4017

Vous avez une déclaration ( si o tandis que par exemple), juste avant le code que vous avez posté, sans accolades.

Par exemple :

if (somethingIsTrue) 
{    
   var user= new ApplicationUser { 
       UserName = model.myUser.Email,
       Email = model.myUser.Email ,
   };
}

est correct, mais le code ci-dessous :

if (somethingIsTrue) 
   var user = new ApplicationUser { 
      UserName = model.myUser.Email,
      Email = model.myUser.Email ,
   };

se traduira par le CS1023 : Embedded statement cannot be a declaration or labeled statement.

UPDATE

La raison, selon @codefrenzy, est que la variable nouvellement déclarée sortira immédiatement de son champ d'application, à moins qu'elle ne soit incluse dans une déclaration de bloc, d'où elle peut être accessible.

La compilation passera cependant dans les cas suivants.

Si vous initialisez seulement une nouvelle instance d'un type, sans déclarer une nouvelle variable :

if (somethingIsTrue) 
   new ApplicationUser { 
       UserName = model.myUser.Email,
       Email = model.myUser.Email ,
   };

ou si vous attribuez une valeur à une variable existante :

ApplicationUser user;

if (somethingIsTrue) 
   user = new ApplicationUser { 
       UserName = model.myUser.Email,
       Email = model.myUser.Email ,
   };

-1voto

Mel Padden Points 653

Je viens d'avoir cette erreur, et la solution a été d'ajouter une accolade au if qui précède immédiatement mon code, puis de l'enlever à nouveau. Visual Studio facepalm OTD.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X