【发布时间】:2014-11-04 20:04:44
【问题描述】:
我需要根据我保存的用户类型显示不同的表单字段。
我有一些用户类型,而一些用户类型具有相同的数据,因此您可以想象以下情况(可能会有更多类型):
- TypeA:名称、密码等、LinkedToLegacySystemA、LegacySystemAUserId
- TypeB:名称、密码等、LinkedToLegacySystemB、LegacySystemBUserId
- TypeC:名称、密码等、LinkedToLegacySystemC、LegacySystemCUserId、LegacySystemCAdminLevel
当我创建一个新用户时,我可能处于这些系统中的任何一个的上下文中,但我确切地知道我连接到哪个系统(每种类型的用户都有一个特定的 CRUD 控制器),但我想分享意见(如果可能)。所以我得到了这个:TypeAUserController、TypeBUserController、TypeCUserController,每个都有自己的 Create、Retrieve、Update 和 Delete Get/Post 操作。
所以基本问题是“如何重用视图以显示为每个用户创建?”
编辑: 为了进一步澄清,每个用户都有共享信息,这是我想分享的观点。迄今为止我提出的想法假设模型之间的差异将被封装在局部视图中,并且每个潜在模型都有自己的视图。因此,我们正在为用户的每个 CRUD 操作查看单个页面级模型,然后为每个封装差异的子模型查看单个子模型。 这不是一个好方法,原因如下。
【问题讨论】:
-
鉴于您一直含糊不清,这很难说。视图应该是模型的强类型。如果你有不同的模型,你应该有不同的观点。但是,您总是可以拥有一个包含所有这些的视图模型。你可以有一个所有视图模型都继承自的基类,然后使用 EditorTemplates 来呈现特定类型。但是,所有这些都有您需要处理的各种问题。
-
是的,我为我的头脑风暴添加了我自己的答案。他们符合你的建议,你是对的,他们每个人都有自己的问题:(
标签: asp.net-mvc