我即将将我们的软件从ASP.NET WebForms升级到.NET MVC。在整个网络上,它展示了如何基于模型创建视图,这很好。
在此项目中,用户可以隐藏模型的属性以生成适合他们的视图,而另一个网站中的另一个客户端则隐藏其他属性。
代码是完全相同的,但我想知道是否有一种方法可以轻松地根据条件隐藏/显示模型的属性,希望在我的视图中没有大量的IF语句。
示例 - 1客户端如何只能看到名称和城镇,而另一个客户端看到所有3个属性。只需要根据条件进行展示。
public class MyObject() {
public property name { get; set; };
public property town { get; set; };
public property customText { get; set; }
public MyObject() {}
}
注意:用户也可以确定这些属性的顺序,我可以轻松地执行此操作吗?
只是说创建单独的视图是不可能的。以上是具有属性的模型的一个非常简单的示例。我们的模型可以有大约100个属性,用户可以随时打开和关闭它们,因此它需要能够动态完成
有没有办法动态创建ViewModel?
提前致谢
答案 0 :(得分:1)
创建Property
类或类似内容并对数据进行适当建模:
public class Property
{
public string Name {get;set;}
public bool Visible {get;set;}
public int Order {get;set;}
}
然后您的视图模型可能类似于您的示例:
public class ViewModel
{
public Property Name {get;set;}
public Property Town {get;set;}
public Property CustomText {get;set;}
}
答案 1 :(得分:0)
您无法将多个模型绑定到您的视图。显然,您必须根据用户角色在视图中执行解决方法。 或者为每个用户角色创建一个单独的模型和视图。
答案 2 :(得分:0)
我一直致力于一个名为Dynamic MVC的项目。
它目前没有做你的要求。功能已经存在,它不会以您需要的方式暴露。但是,如果您感兴趣,我将添加功能,以便您可以传递要在查询字符串中显示的属性。最终,可自定义的动态视图将为您生成页面,无需任何编码。此外,属性的顺序将决定页面上的顺序。这适用于具有DynamicEntity属性的任何模型。
如果您有兴趣我可以在下一个版本中加入它,请告诉我。