gpt4 book ai didi

asp.net - ASP.NET MVC 中 View 特定的模型?

转载 作者:行者123 更新时间:2023-12-02 18:49:43 26 4
gpt4 key购买 nike

我对 MVC 比较陌生,所以这可能是一个新手问题。

我正在尝试了解如何在一些看似不简单的场景中保持清晰的关注点分离的最佳实践。

我现在正在考虑两种情况。想象一下一个非常基本的应用程序,可以让用户查看和编辑律师的在线个人资料。有一个操作/ View 用于显示特定用户的个人资料,还有一个操作/ View 用于编辑特定用户的个人资料。很容易想象一个漂亮而干净的 Model 类来表示用户配置文件的详细信息,可能是使用 Entity Framework 创建的并映射到用户配置文件 SQL 表。

在用于显示用户个人资料的 View 操作/ View 中,从功能上来说,我需要有一个按钮或链接来让用户编辑个人资料。但这应该只适用于某些用户子集。例如,用户可以编辑自己的个人资料。此外, super 用户可以编辑任何人的个人资料。我的问题是 View 应该如何决定在渲染特定配置文件时链接是否应该存在。我认为 View 包含确定当前用户是否可以编辑当前配置文件的逻辑是错误的。我应该向 UserProfile 模型类添加 IsEditable 属性吗?这并不让人感觉悲惨,但也不完全正确。我应该创建一个新的 Model 类来聚合 UserProfile 和有关安全性的其他信息吗?

另一种情况...编辑特定个人资料时,可编辑的内容之一是特定律师的专业列表。可能的专业列表并不固定。如果 View 想要将它们呈现在组合框中,它需要数据库中所有可能的专业的列表。 View 不应该直接从数据库获取它们,所以我是否再次执行聚合模型操作并为 View 提供用户配置文件和有效专业列表?

我想我试图解决的一般问题是我是否应该乐于创建大量本质上特定于各个 View 的小模型类。每个类将包含该特定 View 所需的较大域模型的各种不相关部分。

最佳答案

ViewModel 模式更具体地适合您所描述的场景。您可以使用ViewData,但这是不太推荐的解决方案,因为您失去了 ASP.NET MVC 框架的许多好处。例如,当您使用ViewData时,您的 View 中没有类型安全、编译时检查和智能感知支持。

关于asp.net - ASP.NET MVC 中 View 特定的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com