我想根据登录用户的角色创建一个共享控件,用于生成标记。为了达到这个目的,我需要在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创建共享库