Какой метод повторного использования лучше в данном случае - ascx или другой

У меня есть приложение ASP.NET, которое показывает оценки для разных типов учащихся. У некоторых студентов есть курс для самостоятельного обучения, который не включает штрафы за просрочку и контрольные вопросы, а у других есть стандартный курс в классе, в котором они есть.

Таким образом, при отображении оценки учащегося я определяю, к какой категории относится этот учащийся, а затем отображаю оценку соответствующим образом.

Прямо сейчас я делаю это с условными операторами, но я подумал о том, чтобы сделать каждый случай в файле ascx (т.е. один ascx с gridView для самостоятельного изучения и один с gridView для класса, каждый из которых вызывает методы заполнения данных в моих данных класс доступа).

Возможно, мне придется повторно использовать эту функцию в другом месте приложения, чтобы показывать оценки на разных страницах, поэтому какой-то пользовательский элемент управления кажется оправданным.

Возможен ли такой подход?


person Caveatrob    schedule 10.04.2009    source источник


Ответы (4)


Этот подход кажется мне хорошим — элементы управления разработаны, чтобы помочь вам повторно использовать код. Я думаю, что набор пользовательских элементов управления отлично сработает здесь.

person Andrew Hare    schedule 10.04.2009

Этот подход определенно осуществим, и его легко изменить, если вы захотите позже изменить способ отображения HTML (новые стили и т. д.). Я бы сказал, что ASCX — хороший подход.

person Brandon Montgomery    schedule 10.04.2009

Убедитесь, что вы адекватно отделяете логику вычислений от дисплея. Я бы использовал класс, чтобы фактически определить оценки (возможно, несколько классов с хорошим деревом наследования), чтобы фактически выполнить сопоставление и просто отобразить соответствующим образом в вашем пользовательском элементе управления.

Если у вас есть несколько классов (или какое-либо свойство для определения типа конкретного экземпляра), вы также можете легко создать фабрику для создания экземпляров пользовательских элементов управления для вас, где вы получите правильный тип пользовательского элемента управления на основе переданного вычисления.

person Jason Coyne    schedule 10.04.2009
comment
Прямо сейчас моя логика вычислений работает с объектом данных, возвращаемым из базы данных, и отправляет данные во внешний интерфейс в качестве источника для gridView. Все расчеты уже сделаны к тому времени, когда вторая таблица данных попадает во внешний интерфейс. - person Caveatrob; 10.04.2009

Вот как я понимаю ваше приложение:

  1. У вас есть студенты, зарегистрированные на курсы.
  2. Студенты могут быть стандартными или самостоятельными.
  3. Метод оценивания по курсу отличается для разных типов студентов.
  4. Вам нужен способ отображать правильную оценку в зависимости от типа учащегося.

Я бы подумал, что вы могли бы обойтись одним элементом управления для отображения оценок, но обязательно разделите свою логику. Может быть, что-то вроде:

public class Student{
   public GradingType Type {get;set;}
   public List<Course> RegisteredCourses{get;set;}
   //etc...
}

public class Course{
   //etc...
}

public static class GradeCalculator{
   public static CalculateStudentGrade(Student student, Course course){
      //grade logic...
   }

}
person Community    schedule 10.04.2009