Salut à tous et merci d'avance. J'ai un code que je suis en train de fixer où je reçois leImpossible de lancer System.String pour taper System.Collections.Generic.Dictionary <string, string> avec la variable de session
message d'erreur: Impossible de lancer
System.String
taperSystem.Collections.Generic.Dictionary<string, string>
mais je ne peux pas comprendre quelle partie du le code est interprété en tant que System.String et en cours d'insertion dans la variable de session, ce qui provoque la casse de Dictionary<string, string>
.
Le code est assez simple, cette déclaration:
Dictionary<string, string> myControls;
private readonly string SCONTROLS = "smControls";
En OnInit:
if(!isPostBack)
{
myControls = new Dictionary<string, string>();
Session[SCONTROLS] = myControls;
}
else
{
if (Session[SCONTROLS] != null)
{
myControls = (Dictionary<string,string>)Session[SCONTROLS];
if (myControls != null)
foreach (var controlID in myControls.Keys)
{
UserControl controlToAdd = new UserControl();
controlToAdd = (UserControl)controlToAdd.LoadControl(myControls[controlID]);
controlToAdd.ID = controlID;
formatPlaceHolder(controlToAdd);
}
}
}
Ensuite, dans une section distincte où il y a un contrôle, certaines valeurs sont mises à jour:
UserControl uc = DefaultControl as UserControl;
if (uc != null)
{
uc.ID = Guid.NewGuid().ToString();
formatPlaceHolder(uc);
if (!myControls.Keys.Contains(uc.ID))
myControls.Add(uc.ID, uc.AppRelativeVirtualPath);
else
myControls[uc.ID] = uc.AppRelativeVirtualPath;
DefaultControl.LoadNewItem(item, uc.ID, Master.EmpID.Value, ShowRemove, Master.ID);
}
J'ai spéculé que peut-être une partie du problème est que lorsque myControls
est modifié, il n'est jamais enregistré dans la variable de session, donc quand il essaie de faire la distribution à partir de la variable de session est simplement vide. Mais puisqu'il a été initialisé en tant qu'objet Dictionary<string,string>
pour commencer, je pense que cela n'aurait pas d'importance s'il était encore vide?
Ou le problème est qu'il ne s'initialise pas correctement à l'intérieur de la fonction OnInit
?
Mise à jour des informations:
Les valeurs de la variable de session ressemble à ceci:
Key: c52acd20-8d3e-44cc-bc79-8fee9c9c3064
Value: "~/Questions.ascx"
Avez-vous vraiment des guillemets autour de votre chaîne, une chaîne dans '(Dictionary <'string, string'>) Session [SCONTROLS];'? – Habib
non, ceux-ci ne sont là que parce que sans cela, la partie «<» du code disparaît et je ne sais pas comment résoudre ce problème autrement. –
Je l'ai édité. Puisque vous utilisez des blocs de code, vous n'avez pas besoin de guillemets simples. – Habib