0

我寫了一個自定義Html Helper,並且可以從任何視圖中調用它,如下面的@ Html.FootNoteNumberedLink。問題是我有一套相當複雜的部分視圖嵌套在視圖中,這個特定的助手需要跟蹤已經通過其他部分視圖添加的數據。換句話說,它爲整個視圖保留了所有腳註的運行記錄(包含部分視圖)。問題是@Html似乎在每個部分視圖加載時都被實例化。這意味着我的幫手不能從部分視圖1中獲得腳註1,2,3,並在部分視圖2上繼續使用腳註4,5,6,而不是在每個局部視圖上新建HtmlHelper,因此無法追加數據。在視圖和它的部分之間共享HtmlHelper類

腳註的內部工作使用的ViewData存儲的腳筆記列表這樣:計算機[ViewDataKey]如表

任何人解釋爲什麼MVC是這樣做還是我做錯了什麼?

像往常一樣感謝您的幫助。

回答

1

HtmlHelper被用作簡單的標記生成器類。使用它來記錄變化可能不是一個好主意。

相反,我會創建一個強類型的viewmodel並將其填充到控制器中。 然後,您可以將視圖模型傳遞到您的主視圖並打印出來。

您的意見除了繪製控制器傳遞的任何信息外,不應該做任何事情。