【发布时间】:2017-03-26 18:09:55
【问题描述】:
我有一个视图模型,用于由我的网站表示的对象。我们就叫它Student吧。
我很高兴通过对添加、详细信息和编辑视图使用相同的视图模型来最大程度地减少应用程序的混乱。
但是,某些元素不应在编辑视图中进行编辑,例如密码。所以我从视图中删除了这些。
但是,现在ModelState.IsValid 在回发时报告错误。
是否有一种直接的方法可以为所有这些视图使用相同的视图,但以某种方式覆盖我的编辑视图所需的状态?
注意:我意识到我可以使用隐藏字段。但是我不习惯向客户端发送密码等数据并返回。我只是不想在这里公开它。
【问题讨论】:
-
您是否考虑过创建特定视图视图模型?根据需要使用继承。
-
属性是编译时元数据,它们对于您的请求并不灵活。添加到已经提供的建议之一,创建一个通用的基本视图模型并具有虚拟属性。在视图特定的视图模型中,覆盖必要的属性并根据需要应用所需的属性。
-
@Shyju:是的,我确实考虑过这一点,如果没有更简单的方法,我可能会采用这种方法。但我很高兴能最大限度地减少所需模型的数量。
-
如果您留下臃肿而复杂的模型,那么最小化模型并不会让事情变得更简单。在这种情况下,拆分成不同的模型是更简单的选择。
-
@JMadel:最小化模型如何等同于臃肿和复杂的模型?我想说两者是完全相反的。
标签: c# asp.net asp.net-mvc viewmodel