2011-12-06 33 views
0

我正在寫一個幫助課來查詢我的Zenfolio飼料,返回並顯示圖像。現在,這段代碼被分割在我的控制器中的視圖模型和代碼之間。我想把它打包成一個幫手類。所有的代碼都會進入幫助程序嗎?還是我仍然將代碼在不同的類之間進行拆分,只有幫助程序才能生成html?我用Google搜索了一下,但沒有找到我的問題的答案。關於Html幫助程序,數據訪問代碼是否也進入了幫助程序類?

回答

3

在MVC模式中,模型(數據),視圖(html)和控制器(將模型賦予視圖的內容)之間存在明顯分離。

要回答你的問題,不可以。在控制器中加載模型。在視圖中顯示它們。 Html Helpers應該只爲你的視圖生成html。

您可能需要考慮使用DisplayTemplate,它允許您爲每種特定類型的模型使用相同的視圖模板。

2

我不會從視圖中進行任何數據訪問。這聽起來像是一個很好的動作用例,並且通過RenderAction方法重用了代碼。您可以使用[ChildActionOnly]屬性將該操作標記爲子操作,這可確保無法直接從HTTP請求調用該操作,並返回PartialView結果。

HTML幫助程序應該真的用於從ViewData或Model(也就是您的視圖模型)中獲取的數據生成HTML標記。

1

HtmlHelper中的數據訪問只是一種痛苦。

我已經不幸繼承了項目中的第二個開發人員將臨時SQL放入HtmlHelpers的項目。 HtmlHelpers由第一個開發人員精心編寫,專用SQL幾乎消除了面向服務的體系結構的所有時間和精力,其中有一個ORM(二級緩存變得毫無價值),工作單元模式(交易,毫無價值)以及設計的各個方面。最終,第二個開發人員必須製作更大,更大的HtmlHelpers,以便不同的元素可以共享數據訪問權限。

這最初是爲顯示模式完成的,編輯是通過一堆醜陋的自定義javascript完成的。總而言之,當頁面呈現時,它對數據庫進行了600次同步調用。