我需要根据我保存的用户类型显示不同的表单字段。
我有一些用户类型和一些用户类型具有相同的数据,因此您可以想象以下(可能有更多类型):
当我创建一个新用户时,我可能处于任何这些系统的上下文中,但我确切地知道我所连接的系统(每个类型的用户都有一个特定的CRUD控制器),但我想分享观点(如果可能的话)。所以我得到了这个:TypeAUserController,TypeBUserController,TypeCUserController,每个都有自己的Create,Retrieve,Update和Delete Get / Post Actions。
所以基本问题是"我如何重复使用视图为每个用户显示创建?"
编辑: 为了进一步说明,每个用户都有共享信息,这是我想要分享的视图。我迄今为止提出的想法假设模型之间的差异将被封装在局部视图中,并且每个潜在模型都有自己的视图。因此,我们要查看用户的每个CRUD操作的单个页面级模型,然后查看封装差异的每个子模型的单个子模型。 由于下面列出的原因,这不是一个好方法。
答案 0 :(得分:0)
潜在解决方案1: 将此模型传递给视图
然后在视图中使用部分名称来决定显示哪个部分,并选择要传递给它的非空模型。
提交表单时,它会提交到一个带有自定义模型绑定器的页面,该页面将选择正确的模型。
优点:
缺点:
答案 1 :(得分:0)
潜在解决方案2:使用视图包。
模型非常简单:
然后,视图将检查Viewbag,以获取有关加载哪个部分的信息,方法是指定部分名称或提供要打开的视图的枚举。 然后,partial会将viewbag中的项目转换为特定类型。
优点:
缺点:
答案 2 :(得分:0)
潜在解决方案3:使用标记界面
View根据传递的模型加载部分,然后将ILegacyUserDataModel传递给partial。然后,部分将投射到它为其设计的任何模型。
优点:
缺点:
答案 3 :(得分:0)
好的,这是实际实现的方式......
3页级"显示"每个CRUD上的GET模型,每个模型
然后是观点:
我们几乎翻转了视图/模型。
缺点
赞成