有,你有─
做它作爲一個HtmlHelper
擴展幾個選擇。可能對於這類事情並不理想,因爲顯示橫幅的管理和關聯的邏輯確實是橫幅組件/部件/部分的關注點。
作爲局部視圖使用,並使用Html.RenderPartial(object Model)
來調用它。現在邏輯處於局部視圖,但也可能有一些應用邏輯不應該真正進入視圖,並且真正屬於模型或控制器。此外,您最終可以傳遞給主視圖的胖視圖模型,也必須爲主視圖中呈現的每個局部視圖提供視圖模型。我認爲在某些情況下,這並不理想,特別是當部分的視圖模型中的數據與主視圖的數據無關時。這給我們帶來了......
將它作爲一個具有關聯控制器和局部視圖的子動作來執行。邏輯將很好地封裝在控制器中,局部視圖將簡單地渲染出從BannerController
傳遞的任何內容。
你當然可以把它放進一個單獨的程序,並將它設置爲Portable area。這樣,您可以將部分視圖嵌入到程序集中,並重新使用該小部件,只需將程序集放入bin文件夾並在主應用程序項目中引用它即可(您可能還需要設置一些配置) 。
我是否會親自這樣做,取決於組件的重用;說實話,我可能會在主應用程序的某個區域內設置它,然後,如果我發現需要重新使用它,請將其移出到便攜區域。
我也一般喜歡將數據訪問邏輯保存在單獨的程序集中,並使用數據訪問控制器。