2014-09-01 3 views
-1

Я работаю над проектом (веб-сайт ASP.NET), где мне нужно вызвать метод на веб-странице из класса.Вызов метода страницы ASP.NET из метода файла класса

/// По умолчанию метод Страница является

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<clsPerson> objPersonList) 
    {      
     GridView1.DataSource = objPersonList.ToList(); 
     GridView1.DataBind(); 
    } 
} 

`

структура файла класса

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

clsPerson Класс:

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

Как показано в приведенной выше программе , Мне нужно вызов метода BindGridView страницы из конструктора класса BLMethods

+0

Привет. Разве последняя строка в BLMethods ctor не выведет ошибку компиляции? – deostroll

ответ

1

Я бы сделал это наоборот. Добавьте метод класса (с GridView в качестве аргумента):

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

По умолчанию метод Страница является

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

} 

Попробуйте дать методы получения и установки в свойствах класса clsPerson:

public class clsPerson 
{ 
    public int personID {get;set;} 
    public string personName {get;set;} 
} 
+0

Когда я следил за вашим подходом, я получаю сообщение об ошибке, поскольку [источник данных для GridView с идентификатором «GridView1» не имеет никаких свойств или атрибутов для генерации столбцов. Убедитесь, что ваш источник данных имеет контент.] –

+0

@PavanKumar Можно ли увидеть класс clsPerson? –

+0

общественный класс clsPerson { public int personID; public string personName; } –

0

Вы должны работать по-другому. Вы пишете метод в BL, который возвращает objPersonList, чтобы вызвать его со своей страницы для привязки.

+0

Когда я следил за вашим подходом, я получаю ошибку, поскольку [источник данных для GridView с идентификатором «GridView1» не имеет каких-либо свойств или атрибутов для генерации столбцов. Убедитесь, что ваш источник данных имеет контент.] –

1

Вы должны возвращать только данные из класса бизнес-правил и привязывать представление сетки в классе за классом.

вы можете сделать метод в классе, который будет возвращать загрузку страницы List<clsPerson> и на связывать его с вашей girdview:

public class BLMethods 
    { 
     public BLMethods() 
     { 

     } 

     public List<clsPerson> GetPersons() 
     { 
      List<clsPerson> objPersonList = new List<clsPerson>(); 
      clsPerson objPerson = new clsPerson(); 
      objPerson.personID = i; 
      objPerson.personName = "Person" + i; 
      objPersonList.Add(objPerson); 

      return objPersonList ; 
     } 
    } 

и в коде позади страницы:

protected void Page_Load(object sender, EventArgs e) 
    { 
     BindGridView(); 
    } 

    public void BindGridView() 
    {    
     BLMethods objBLMethods = new BLMethods(); 
     GridView1.DataSource = objBLMethods.GetPersons(); 
     GridView1.DataBind(); 
    } 
+0

Здесь, в BLMethods, мне нужно проверить авторизацию пользователя, и если он действителен, мне нужно вызвать BindGridView или перейти на страницу с ошибкой –

+0

для проверки авторизации, почему бы не использовать проверку подлинности форм. –

+0

Мы используем DataBase для авторизации, отправив имя пользователя, пароль , pagename к процедуре, мы получаем объект ответа –

1

Вы должны смотреть чтобы правильно отделить ваши проблемы. На основе комментариев и запросов от ответа Эхсана Саджада:

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(string userName) { 
     return true; //Do your auth here. 
    } 
} 

public class PersonHelper 
{ 

    private void GetPeople() 
    {      
     List<clsPerson> objPersonList = new List<clsPerson>(); 

     //Populate your list of people. 

     return objPersonList; 
     //BTW - hungarian notation for your naming is just going to make your 
     //code look cluttered... 
    } 
} 
Смежные вопросы