在这种情况下,哪种重用方法更好 - ascx或其他

时间:2009-04-10 18:52:05

标签: asp.net user-controls code-reuse

我有一个ASP.NET应用程序,可以显示不同类型学生的成绩。有些学生有自学课程,不包括晚期惩罚和测验,而其他学生则有标准的课堂课程。

因此,在显示学生成绩时,我会确定该学生属于哪个类别,然后适当地提供成绩。

现在我使用条件语句执行此操作,但我考虑将每个案例变成一个ascx文件(即一个ascx带有一个gridView用于自定进度,一个带有gridView for classroom,每个都调用数据填充方法在我的数据访问类中。)

我可能需要在应用程序的其他位置重复使用此功能,以在不同页面上显示成绩,因此某种自定义控件似乎是合理的。

这种方法可行吗?

4 个答案:

答案 0 :(得分:0)

这种方法对我来说听起来不错 - 控件旨在帮助您重用代码。我认为一组UserControls在这里工作得很好。

答案 1 :(得分:0)

这种方法绝对可行,如果您想要稍后修改HTML的显示方式(新样式等),则可以轻松更改。我会说ASCX是一个很好的方法。

答案 2 :(得分:0)

确保将计算逻辑与显示屏分开。我会使用一个类来实际确定成绩(可能是多个具有良好继承树的类)来实际进行匹配,并且只需在用户控件中正确呈现。

如果你有多个类(或某些属性来确定特定的isntance是什么类型),那么你也可以轻松创建一个工厂来为你实例化用户控件,你将获得正确的用户控件类型,基于传递的计算

答案 3 :(得分:0)

以下是我了解您的应用的方式:

  1. 您有注册课程的学生。
  2. 学生可以是标准的或自定进度的。
  3. 每门课程的评分方法因不同类型的学生而异。
  4. 您需要根据学生的类型显示正确的成绩。
  5. 我认为你可以用一个控件来显示成绩,但肯定会确保你的逻辑分开。也许是这样的:

    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...
       }
    
    }