2008-12-03 12 views
0

J'ai écrit un contrôle utilisateur personnalisé qui renvoie des données spécifiques à l'utilisateur. Pour charger le contrôle utilisateur personnalisé J'utilise la ligne de code suivante:Comment puis-je transmettre une chaîne de données à un contrôle utilisateur personnalisé chargé par programme en C#

UserControl myUC = (UserControl).Load("~/customUserControl.ascx"); 

Mais comment puis-je accéder string user à l'intérieur du contrôle de l'utilisateur myUC?

+0

Oh s'il vous plaît reformuler. Cela n'a pas beaucoup de sens. –

+0

Excusez-moi l'anglais n'est pas ma langue principale. Quelle partie devrais-je reformuler? –

Répondre

1

appelons votre usercontrol "Bob"

Si vous héritez de UserCon Trol à Bob, je suppose qu'il est sûr de le faire:

Bob b = (Bob).Load("~/customUserControl.ascx"); 

Pour la partie utilisateur, je ne peux pas vraiment suivre ce que vous voulez faire, est le « utilisateur » dans la classe ont été la création de la " Bob "usercontrol et vous voulez définir une propriété dans le" Bob "usercontrol ou est-ce l'inverse?

Pour le premier, vous devez créer une propriété dans votre usercontrol.

class Bob : UserControl{ 
public string User { get; set;} 
} 

puis de le définir après la création de l'instance "Bob".

b.User = theuser; 
0

Vous aurez besoin de lancer le contrôle chargé du type réel et utiliser ses biens publics:

MyUserControl myUCTyped = (MyUserControl)myUC; 
myUCTyped.ThePublicProperty = "some value"; 
1

Supposons le nom de votre contrôle utilisateur personnalisé est « MyUserControl »

Essayez ce code:

MyUserControl myUC = (UserControl).Load("~/customUserControl.ascx") as MyUserControl; 
string result = myUC.user; 
+0

Comment avez-vous fait vos moulages? Pouvez-vous coller du code ici? –

+0

Je l'ai fait de la même façon que vous avez suggéré. Mais, parce que je veux charger tout dynamiquement je ne peux pas mettre <% @ Register Src = "~/customUserControl.ascx" TagName = "MyUserControl" TagPrefix = "monUC"%> en haut. Et je pense que c'est la raison pour laquelle je reçois une erreur lorsque je copie et collez votre code. –

+0

Avez-vous eu une erreur de compilation ou d'exécution? –

0

Merci jusqu'à présent. Mon code est le même que celui excactly écrit ci-dessus:

public partial class todo : System.Web.UI.UserControl 
{ 
    private string mysecondteststring; 
    public string setValue 
    { 
     get 
     { 
      return mysecondteststring; 
     } 
     set 
     { 
      mysecondteststring = value; 
     } 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     // my code 
    } 
} 

Mais je ne suis pas en mesure de créer une instance de sondage, dans mon code de service Web. Est-ce que j'oublie quelque chose?

-> Vous avez oublié d'ajouter le Reference à la page .aspx, où le contrôle utilisateur est chargé dynamiquement. Cela fonctionne maintenant avec des pages .aspx normales. code exemple peut être trouvé here

Est-ce que quelqu'un d'entre vous savent comment les contrôles utilisateur peuvent être ajoutés dans les services Web aswell, parce que l'attribut de référence n'y est pas disponible?