2009-04-10 88 views
0

我有一個ASP.NET應用程序,可以顯示不同類型學生的成績。有些學生的自主學習課程不包括遲到的懲罰和測驗,而其他學生有標準的課堂課程。在這種情況下,哪種重用方法更好 - ascx或其他

因此,當顯示學生的成績時,我會確定學生所屬的類別,然後適當地提供成績。

現在我用條件語句來做這件事,但是我想把每個事件都變成一個ascx文件(例如,一個ascx帶有一個用於自定進度的gridView,另一個帶有一個用於教室的gridView,每個都調用數據總體我的數據訪問類中的方法)。

我可能需要在應用程序的其他地方重新使用此功能,以顯示不同頁面上的成績,所以某種自定義控件似乎是有保證的。

這種方法是否可行?

回答

0

這種方法對我來說聽起來不錯 - 控件旨在幫助您重用代碼。我認爲一組用戶控件在這裏工作得很好。

0

這種方法絕對可行,如果您想修改稍後顯示HTML的方式(新樣式等),則可以輕鬆更改。我會說ASCX是一個很好的方法。

0

確保您充分將計算邏輯從顯示中分離出來。我將使用一個類來實際確定等級(可能有多個具有良好繼承樹的類)來實際進行匹配,並在用戶控件中恰當地進行渲染。

如果您有多個類(或者用於確定某個特定事件類型的屬性),那麼您也可以輕鬆地創建一個工廠來爲您實例化用戶控件,並根據計算得到正確的用戶控件類型通過。

+0

現在我的計算邏輯與從數據庫返回的數據對象一起工作,並將數據表發送到前端作爲gridView的源。所有計算都在第二個數據表達到前端時完成。 – Caveatrob 2009-04-10 19:08:35

0

這就是我所理解你的應用程序:

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

} 
相關問題