2017-02-03 50 views
0

我有我的投資組合的控制器,我使用的視圖模型稱爲DisplayItem。模型的功能不相關,但模型表示關於我的投資組合的部分數據。ASP MVC - 傳遞模型數據或從數據庫檢索

在該控制器的索引頁面,通過從數據庫中提取所需信息,然後將集合(列表<>)發送到視圖,構建前5個投資組合DisplayItems。該視圖在具有按鈕的列中顯示預覽,以便爲顯示的每個項目「查看項目」。單擊這些按鈕將轉到PortfolioController操作「顯示」。

我的問題是關於發送適當的數據到視圖的「顯示」兩種方法的效率。我當然可以發送所選DisplayItem的ID,並將其從數據庫中拉出以重建模型並將其發送到視圖。我最初的想法是,這對於數據庫來說是不必要的工作,因爲我之前已經提取了所需的信息。儘管使用ID方法可以讓我在必要的時候不會提取其餘的信息。

我的另一個想法是序列化模型(它包含無法使用POST發送的集合),然後發佈我需要的字符串作爲操作,然後序列化爲一個對象。

我的經驗總的來說不是網絡,它是遊戲編程,所以我在某種程度上超出了我的元素,並且會喜歡關於選擇哪條路線的建議,或者如果有更好的方法可以做這個。

+0

假設ID是你的表的PK,從數據庫中獲取對象將是盲目快速的,你應該這樣做。將模型序列化到視圖並通過網絡再次發回它相當於試圖模仿webforms中的'ViewState' –

+0

當然,我顯然不知道你的應用程序的細節,但一般沒有理由,爲什麼收藏不能被張貼;它只需要更多的工作。你的領域將有ID像CollectionProperty [0]。也就是說,你應該使用這個ID並像其他人說的那樣查詢數據庫。 – Jaquez

回答

2

我希望在頁面加載時再次查詢數據庫。它允許

- 輸入>檢查驗證(ID通過)

- >減少帶寬(如果數據量大) - >爲請求的信息

授權的用戶。

- >使路由URL更加用戶友好(易於書籤)。

1

隨着您的應用程序逐漸發展,您的DisplayItem將擁有越來越豐富的信息,而您的索引視圖將僅顯示摘要信息。

由於索引視圖和詳細視圖最終需要不同的信息集合,因此只需將ID字段通過網絡傳遞即可。

正如Stepen Muecke所說,從數據庫讀取數據將會很快。數據庫是這樣的: - )