【发布时间】:2014-09-15 00:11:53
【问题描述】:
我即将将我们的软件从 ASP.NET WebForms 升级到 .NET MVC。在整个网络上,它展示了如何基于模型创建视图,这很好。
在这个项目中,用户可以隐藏模型的属性以生成适合他们的视图,另一个网站中的另一个客户端并隐藏其他属性。
代码都是一样的,但我想知道是否有一种方法可以轻松地根据条件隐藏/显示模型的属性,希望在我的视图中没有大量的 IF 语句。
示例 - 一个客户如何只能看到名称和城镇,而另一个客户如何看到所有 3 个属性。只需要根据条件显示即可。
public class MyObject() {
public property name { get; set; };
public property town { get; set; };
public property customText { get; set; }
public MyObject() {}
}
注意:用户还可以确定这些属性的顺序,我也可以轻松地做到这一点吗?
只是说创建单独的视图是不可能的。上面是一个非常简单的带有属性的模型示例。我们的模型可以有大约 100 个属性,用户可以随时打开和关闭这些属性,因此需要能够动态完成
有没有办法即时创建 ViewModel?
提前致谢
【问题讨论】:
-
你可以创建单独的视图并根据角色显示特定视图
-
您可以过滤您的模型,例如在控制器上,并将这个“过滤”模型发送到视图。例如,您可以创建数据库表,其中每个用户映射您要使用它们呈现的属性的数量,然后在控制器中访问此数据库并根据您从数据库中获得的信息构建模型对象。
-
构建对象模型(动态)听起来很有趣。你有一个简单的例子,或者我可以看到这个的链接吗?
-
我想我真的在这里找到了一些东西gregshackles.com/2010/09/…
-
如果您想使用
ExpandoObject的“动态模型”,那么只需使用ViewBag,它就是ExpandoObject。
标签: c# asp.net-mvc asp.net-mvc-4