2012-07-10 50 views
1

嗨,HTMLHelper中的數據庫操作,是嗎?

我有一個ASP.NET MVC 3網站,我需要建立一個像牆,採用ID列表,然後建立基於這份榜單上imageWall。

imagewall將是一個partialView。

首先想到的是將當前帶有ID的ViewClass列表放在將要顯示的圖像上,但我不確定這是一個好的解決方案,尤其是當這個圖像牆移動到另一個父視圖時尤其如此。

所以問題是。我可以在HTML助手內進行數據庫操作嗎?什麼是最佳做法?

這部分視圖可能會被追查。

+3

是的可能,但不是,你不應該 – jrummell 2012-07-10 18:28:47

回答

1

你爲什麼要這麼做呢?

我想你應該從你控制器的動作在你查看返回列表,然後遍歷它,如:

foreach(var image in @Model.Images) 
{ 
    // output some HTML code here using each image file path... 
    <img src="@image.Path" /> 
} 

您可以在此情況下,使用@Html.RenderAction。你這樣調用它:

@Html.RenderAction("GetImages", "ImageWall"); 

哪裏ImageWall是你的新ImageWall Controller和GetImages是你Action的名稱。

這將允許您在另一個Controller的視圖內使用ImageWall控制器。

+0

我的控制器操作確實已經有一個複雜的ViewClass返回到視圖。正如我所說,我正在考慮將圖像列表放在這個ViewClass中,但這意味着如果將局部視圖(imagewall)移動到另一個視圖,我將不得不在這個ViewClass中包含這個列表。如果我使用這個包將tempdata傳送到視圖中,我還必須在多個操作中完成這些操作,這就是爲什麼我認爲HTMLHelper會是一個好方法。因此,我不需要關心放置這個影像牆的位置,它會自行處理。 – Ivy 2012-07-10 18:03:42

+1

你可以創建一個單獨的'ImagewallController',它是視圖。然後,如果您需要將ImageWall從一個位置移動到另一個位置,則只需在現在需要的位置調用局部視圖即可。 – 2012-07-10 18:12:03

+2

所以,你的意思是我應該使用兩個控制器和動作來顯示帶有部分圖像牆的頁面?這是如何運作的?我可以說當使用這個parial視圖時,它會在ImagewallController上運行正確的操作嗎?現在,我只是使用Render.Partial,有時我會將一些模型傳遞給這個局部視圖,但是避免將這些數據放置在ModelView上是很有用的。 – Ivy 2012-07-10 18:20:48