我想根據登錄用戶的角色創建一個共享控件,用於生成標記。爲了達到這個目的,我需要在Model類中調用一個方法。這是在ASP.NET MVC中做到這一點的正確方法,因爲我聽說我們應該嚴格區分模型和視圖。 請幫忙。使用模型方法創建共享視圖
1
A
回答
0
模型和視圖應該分開,以便溝通的方向應該只在一個方向上進行。通常情況下,View將知道底層模型,但不是相反的方式。
這就是爲什麼ASP.NET MVC的概念是強類型查看其中視圖可以強烈地綁定到特定類型的模型。
因此,我沒有看到將視圖耦合到Model類的成員有任何問題。
0
雖然可以通過助手擴展從您的模型中讀取。這是需要創建大量的標記?如果是的話,我會質疑這是否是最佳方法?
你可以考慮使用「asp:loginview」並從這裏渲染部分視圖?不依賴viewstate的ASP.NET控件在MVC中正常工作。
例子:
<asp:LoginView id="LoginView1" runat="server">
<RoleGroups>
<asp:RoleGroup Roles="Admin">
<ContentTemplate>
<%= Html.RenderPartial("MyPartial"); %>
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
</asp:LoginView>
1
在我看來,在視圖應該不知道是什麼角色應該看到。它是一個控制器功能。同樣,Model不應該關注View如何使用它的信息。
所以,這裏是我如何設計它。
視圖詢問信息。控制器應該知道用戶是誰,他們應該看到什麼。控制器要求模型爲View提供正確的內容。
如果您可以設計系統,以便它可以顯示自己沒有模型或視圖,那很好。
0
在MVC Futures中,您也有Html幫助器RenderAction,它允許您的視圖進行調用和操作,然後在其自己的標記中呈現該操作的結果。
這對於做菜單等工作很有幫助,但這不是嚴格的MVC,但它非常實用。
但最好的使用方法將取決於你需要輸出的HTML,你需要輸出它和爲什麼。如果您可以告訴我們更多關於您需要呈現的Html以及它的用途,那我們可以給您一些更好的幫助。
但有一點是肯定的,模型不應該輸出Html來渲染。
相關問題
- 1. 共享視圖模型
- 2. 如何爲2個不同的視圖創建共享模型?
- 3. 如何使用WinRT類創建公共視圖模型庫?
- 4. 使用兩個模型創建視圖
- 5. 創建子視圖模型使用MEF
- 6. 使用Nuget共享視圖
- 7. 創建django泛型類視圖方法
- 8. 爲模型創建視圖
- 9. System.NullReferenceException創建視圖模型
- 10. MvvmCross - 爲多個視圖共享視圖模型
- 11. 使用WP7中的Caliburn.Micro將視圖模型共享到多個視圖
- 12. 有沒有使用消息建模共享狀態的方法?
- 13. 如何使用2個不同模型創建視圖模型
- 14. 共享視圖
- 15. 爲共享視圖填充模型,在另一個視圖中嵌入共享視圖
- 16. 創建模型方法
- 17. django編程 - 管理,模型或視圖中的「創建」方法
- 18. 如何創建通用視圖模型
- 19. 各種視圖模型結構 - 如何創建視圖模型
- 20. 在模型之間共享通用視圖
- 21. 如何防止用戶控件的共享視圖模型?
- 22. Caliburn Micro和跨應用程序共享視圖模型
- 23. 無法使用視圖模塊創建視圖
- 24. 使用rails共享模型驗證4
- 25. 共享模型中使用的服務
- 26. 使用另一個共享庫創建共享庫
- 27. 在用戶模型創建方法(bcrypt)
- 28. UItableview共享視圖
- 29. 我應該在哪些模型中共享實用方法?
- 30. 使用Webpack的DllPlugin創建共享庫