2017-05-05 30 views
2

我的標題可能很糟糕,因爲我在嘗試執行操作時遇到了問題。在MVC中編輯部分對象時未實際保存

我有一個對象,可以潛在地包含的記錄一個龐大的數字,看起來是這樣的:

public class AssignmentGenerator : BaseGenerator 
{ 
    public bool IsLibrary { get; set; } = false; 
    public List<LineItem> LineItems { get; set; } = new List<LineItem>(); 
} 

public class LineItem 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
} 

我有一個表格創建允許對象的值的編輯,但它是可能的訂單項的列表將變得非常大(我擁有的一個示例是〜3000)。在這種情況下,我想讓行項目列表成爲我視圖中的分頁列表,允許一次編輯10到50個項目。
我已經閱讀了很多關於如何進行分頁的教程和文章,但沒有找到我如何編輯大量數據的文章。我不想將每個頁面上的更改保存到數據庫,直到用戶實際單擊保存按鈕。有沒有辦法將值存儲在對象中,根據需要檢索它們,然後在用戶操作時保存?

回答

2

簡短的回答是肯定的,有一種方法 - 你是程序員,你可以做你想做的事。沒有更多的細節,很難給出真正的代碼示例,所以下面只是模糊的指導。

你來存儲他們的變化地方,但你可以選擇將它們保存在一個臨時數據庫,或者讓你的AssignmentGenerator在內存中的服務器上,只是更新集合時,他們頁面(假設1級的服務器或固定會議)。

您必須在用戶更改頁面(而不是僅獲取端點)時發佈對象的當前狀態。您不必保存到真實的數據庫;你只是更新你的臨時副本。保存按鈕應該觸發一個不同的控制器動作,將臨時副本移動到真實的數據存儲區。

+0

我的經驗是贏得表格和服務,所以我很抱歉,如果這是基本的。對此我的問題是,你如何維護控制器中的對象狀態? – Lance

+1

你不是 - 絕對不在控制器本身,我的意思是,這是共享的。一種選擇可以將其存儲爲會話數據 - http://stackoverflow.com/questions/28154081如果解決方案需要可擴展性,它可以是內存中會話,也可以是更好的分佈式緩存支持。我建議先閱讀更多關於會議的內容,以瞭解他們的工作方式。 –