2010-12-10 29 views
1

J'ai un fichier a1.aspx.cs et j'ai créé le nouveau fichier class1.cs. Je veux appeler une fonction dans a1.aspx.cs qui est dans class1.csComment appeler le fichier .cs à partir d'un fichier .aspx.cs dans asp.net C#

Lorsque j'écris une méthode dans a1.aspx.cs tout fonctionne bien, mais lorsque j'essaie de copier coller le contenu qui se trouve dans l'événement de clic de bouton dans class1.cs fichier et appelez cette fonction i suis incapable d'obtenir toutes les commandes que j'ai utilisées dans ma page Web, quels paramètres je suis supposé passer ??

et l'erreur vient comme

Error 1 The name 'DropDownList1' does not exist in the current context 

et beaucoup d'erreurs plus ces. S'il vous plaît aidez-moi à comprendre comment appeler une fonction dans a1.aspx.cs

+0

Puis-je demander pourquoi passeriez-vous les contrôles, plutôt que des valeurs? Comme Astander l'a mentionné "Typiquement, je préfère garder la logique de l'interface utilisateur avec l'interface utilisateur elle-même, uniquement pour des raisons de simplicité." -> vous devriez suivre ce conseil, cela facilitera les tests aussi. –

Répondre

2

Vous devrez passer les contrôles de la la méthode de classe comme parametes

Quelque chose comme

public class YourClass 
{ 
    public void YourMethod (DropDownList dowpdownlist) 
    { 
     //do stuff here with dowpdownlist 
    } 
} 

Cela ne semble pas être le meilleur façon de gérer les choses.

Typiquement, je préfère garder la logique d'interface utilisateur avec l'interface utilisateur elle-même, uniquement pour des raisons de simplicité.

+0

+1 pour 'En règle générale, je préfère garder la logique de l'interface utilisateur avec l'interface utilisateur elle-même, uniquement pour des raisons de simplicité.' –

+0

+1 de mon côté aussi pour' Typiquement je préfère garder la logique UI avec l'interface utilisateur elle-même, purement pour des raisons de simplicité. ' –

+0

et si j'ai beaucoup d'autres contrôles comme textbox, HtmlEditor (contrôle ajax) etc ... i besoin de tout passer? – Ninad

0

Bien sûr, vous n'obtiendrez jamais de contrôles d'interface utilisateur à partir du fichier aspx dans le class file (i.e. .cs file). vous devrez soit passer les contrôles de l'interface utilisateur dans les paramètres des méthodes.

Ou

ce sera mieux si vous passez juste la valeur de menu déroulant à votre méthode dans le fichier de classe.

.cs fichier de classe

public class MyClass 
{ 
    public void SaveData(string selectedValue) 
    { 
     // do some work with the value 
    } 
} 

.aspx.cs fichier

public partial class AttendLiveSession : System.Web.UI.Page 
{ 
    protected void imgbtnGetItButton_Click(object sender, ImageClickEventArgs e) 
    { 
     MyClass c = new MyClass(); 
     c.SaveData(DropDownList1.SelectedValue); 
    } 
} 
0

Idéalement, vous ne devriez pas utiliser les commandes de l'interface utilisateur dans votre fichier class1.cs. Mais si nécessaire, vous pouvez passer le contrôle "DropDownList1" à la fonction dans class1.cs, puis référencer le contrôle dans la méthode.

EDIT: Je voudrais également ajouter que, si vous prévoyez d'écrire uniquement le code lié à l'interface utilisateur dans class1.cs fichier, vous pouvez toujours modifier la déclaration de classe en class1.cs comme ci-dessous:

public partial class a1 
{ 

} 

Maintenant, vous serez en mesure d'accéder à tous vos contrôles et événements dans cette classe. Ce sera juste la même classe, mais dans deux fichiers physiques différents.