2012-10-25 26 views
0

比方說,我們有這些類:如何在ASP.NET中實現Web窗體平凡編輯

class Teacher { 
    public int Id { get; set; } 
    public string FullName { get; set; } 
    public List<Course> Courses { get; set; } 
} 

class Course { 
    public int Id { get; set; } 
    public string CourseName { get; set; } 
} 

現在可以說,我已經從教師的列表中選擇一個教師的實例,我已經被重定向到一個頁面,我可以編輯此教師可以教授的課程。因此,有一份她可以在momemt上教授的所有課程清單(取自數據庫),帶有「刪除」選項和用戶可以選擇的所有可用課程的下拉列表;當用戶從下拉列表中選擇課程時,它將被添加到「她可以教授」列表中。最後是一個「保存」按鈕。

但是,當用戶從列表中刪除課程或添加課程時,我不想將它保存到數據庫,直到按下「保存」按鈕。我的問題是:保存教師對象及其子課程對象在編輯之前和保存到數據庫之前?

到目前爲止,我一直在使用Session來保存編輯的對象;添加一個新課程只是爲它的集合添加一個子對象,並且刪除一個課程將從Session中刪除一個子對象。這是最好的方式還是有更好的(或至少更清潔)?

回答

1

會話應該沒問題,只要您將所有內容保存在內存中,並且可能會在會話過早丟失時丟失它即可。

但是,如果你正在尋找持久性,我可能會建議一個「待定」數據庫表,在那裏你可以保留未決事務(添加和刪除),直到他們準備好保存。當您在此屏幕上時,可以將實際數據與待處理數據組合在一起,並且當您保存時,可以將未決更改應用於真實數據並殺死待處理更改。

如果他們取消,您只需刪除待處理的記錄。

+0

Ahem,我的會話存儲在SQL Server上,所以這是覆蓋的,我猜你的投票是會話... –

+0

我沒有看到任何錯誤的會話,但肯定在通過利弊之前,盲目使用它 - 如果所有您的更改是通過AJAX完成的,例如,您可以使用JavaScript保留瀏覽器內存中的所有未決更改,並且根本不會佔用任何服務器資源。或者,如果您可能希望其他用戶查看其他人的未決更改,那麼待處理的數據庫表格可能是您最好的選擇。所以這都是關於你的要求。但是,如果你已經有會議工作,並且滿足你的需求,我會說如果它沒有損壞,不要修復它。 –

相關問題