在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?

提前感谢

在MVC中隐藏/显示属性和排序属性

创建一个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属性的模型。

如果您和我感兴趣,请告诉我是否可以将其包含在下一版本中。