Appelez la méthode de page ASP.NET à partir de la méthode du fichier de classe

Je travaille sur un projet (site Web ASP.NET) où je dois appeler une méthode dans une page Web à partir d’une classe.

/// La méthode de page par défaut est

public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { BLMethods objBLMethods = new BLMethods(); objBLMethods.BindingDataToControls(); } public void BindGridView(List objPersonList) { GridView1.DataSource = objPersonList.ToList(); GridView1.DataBind(); } } 

`

la structure du fichier de classe est

  public class BLMethods { public BLMethods() { List objPersonList = new List(); clsPerson objPerson = new clsPerson(); objPerson.personID = i; objPerson.personName = "Person" + i; objPersonList.Add(objPerson); BindGridView(objPersonList); } } 

Classe clsPerson:

 public class clsPerson { public int personID; public ssortingng personName; } 

Comme indiqué dans le programme ci-dessus, je dois appeler la méthode de page BindGridView à partir du constructeur de la classe BLMethods

Je le ferais dans l’autre sens. Ajoutez la méthode à la classe (avec un GridView en argument):

 public class BLMethods { public BLMethods(GridView gv) { List objPersonList = new List(); clsPerson objPerson = new clsPerson(); objPerson.personID = i; objPerson.personName = "Person" + i; objPersonList.Add(objPerson); BindGridView(gv,objPersonList); } private void BindGridView(GridView gv, List objPersonList) { gv.DataSource = objPersonList.ToList(); gv.DataBind(); } } 

La méthode de page par défaut est

 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { BLMethods objBLMethods = new BLMethods(GridView1); objBLMethods.BindingDataToControls(); } } 

Essayez de donner des getters et des setters à vos propriétés de classe clsPerson:

 public class clsPerson { public int personID {get;set;} public ssortingng personName {get;set;} } 

Vous ne devez renvoyer que des données de la classe de règles métier et lier la vue grid dans la classe code behind.

vous pouvez créer une méthode dans la classe qui renverra la List et, au chargement de la page, la lier avec votre girdview:

 public class BLMethods { public BLMethods() { } public List GetPersons() { List objPersonList = new List(); clsPerson objPerson = new clsPerson(); objPerson.personID = i; objPerson.personName = "Person" + i; objPersonList.Add(objPerson); return objPersonList ; } } 

et dans le code derrière la page:

 protected void Page_Load(object sender, EventArgs e) { BindGridView(); } public void BindGridView() { BLMethods objBLMethods = new BLMethods(); GridView1.DataSource = objBLMethods.GetPersons(); GridView1.DataBind(); } 

Vous devriez chercher à séparer vos préoccupations correctement. D’après des commentaires et des requêtes de la réponse d’Ehsan Sajjad:

 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!new AuthenticationHelper().IsUserAuthorisedForPeople(Request.User.Identity)) { Response.Redirect("NaughtyNaughty.aspx"); } BindGridView(); } public void BindGridView() { PersonHelper helper = new PersonHelper(); GridView1.DataSource = helper.GetPeople(); GridView1.DataBind(); } } public class AuthenticationHelper() { public bool IsUserAuthorisedForPeople(ssortingng userName) { return true; //Do your auth here. } } public class PersonHelper { private void GetPeople() { List objPersonList = new List(); //Populate your list of people. return objPersonList; //BTW - hungarian notation for your naming is just going to make your //code look cluttered... } } 

Vous devez travailler autrement. Vous écrivez la méthode dans BL qui renvoie objPersonList, appelez-la à partir de votre page pour la lier.