在我的应用程序中,基于UI上的字段选择,我在UI上加载要从数据库显示的字段列表。根据选择,在数据库中配置每个字段都是必需的在构建UI之后,我会对相同的视图模型发布帖子(在控制器操作中)。
这样做的最佳方式是什么?
我考虑过使用反射并在属性上添加基于IsRequired标志的属性来对照数据库中的每个字段,但我想我必须从UI中消除不需要的字段。
那么我应该创建一个如下的类作为最佳选择,还是我还有别的东西?
Public Class ViewModelTicket
{
Public string EmailAddress{get;set}
Public bool IsRequired{get;set}
Public bool ShouldDisplay{get;set}
}
并在View上抛出一堆if else语句?
由于
答案 0 :(得分:1)
我会选择你开始的,但我会把它放在一个集合中,这样你的模型就是一个集合,或者是你开始使用的那个类的集合。这样,您可以轻松扩展模型以获得更多字段。
<强>更新强>
我仍然认为您可以使用该集合来消除模型中ShouldDisplay
的需要,并且您的集合将只包含您想要显示或获取输入的字段。
或者,您可以将ShouldDisplay
值放在包含div
的类中。
所以你认为会有类似的东西:
<div class="show-@Model.ShouldDisplay">
@Html.LabelFor(m => m.EmailAddress)
@Html.TextBoxFor(m => m.EmailAddress)
</div>
哪个需要这个css:
.show-false { display: none; }
对于IsRequired,您可以在模型中使用类似RequiredIfTrue属性的内容。
所以你的模型将是:
Public Class ViewModelTicket
{
[RequiredIfTrue(IsRequired)]
Public string EmailAddress{get;set}
Public bool IsRequired{get;set}
Public bool ShouldDisplay{get;set}
}