在MVC中隐藏/显示属性和排序属性
本文关键字:属性 排序 显示 MVC 隐藏 | 更新日期: 2023-09-27 18:21:33
我即将把我们的软件从ASP.NET WebForms升级到.NET MVC。在网络上,它展示了如何基于模型创建视图,这很好。
在这个项目中,用户可以隐藏模型的属性以生成适合他们的视图,也可以在另一个网站中隐藏另一个客户端并隐藏其他属性。
代码都是一样的,但我想知道是否有一种方法可以轻松地基于条件隐藏/显示模型的属性,希望在我的视图中没有很多if语句。
示例-如何一个客户只看到名称和城镇,而另一个客户看到所有三个属性。只需要根据情况进行展示。
public class MyObject() {
public property name { get; set; };
public property town { get; set; };
public property customText { get; set; }
public MyObject() {}
}
注意:用户还可以确定这些属性的顺序,我也可以很容易地做到这一点吗?
只是说创建单独的视图是不可能的。上面是一个具有属性的模型的非常简单的示例。我们的模型可以有大约100个属性,用户可以随时打开和关闭这些属性,因此需要能够动态完成
有没有一种方法可以在运行中创建ViewModel?
提前感谢
创建一个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;}
}
您不能将多个模型绑定到视图中。显然,您必须根据用户角色在视图中进行变通。或者为每个用户角色创建一个单独的模型和视图。
我一直在做一个名为DynamicMVC的项目。
http://dynamicmvc.com
它目前没有按照你的要求。该功能已经存在,只是没有按照您需要的方式公开。但是,如果您感兴趣,我会添加该功能,以便您可以传递要在querystring中显示的属性。最终,一个可定制的动态视图将为您生成页面,而无需任何编码。此外,属性的顺序将决定页面上的顺序。这适用于任何具有DynamicEntity属性的模型。
如果您和我感兴趣,请告诉我是否可以将其包含在下一版本中。