我有一个 MVC 4 项目,其中 UI 被强类型化为 ViewModel。视图具有某些需要在某些场景中显示的元素。这些场景由业务逻辑控制,所以我不想在 UI 中有这样的条件语句
If (Role.Equals(“Admin”))
{
<a href=””> Admin Link here</a>
}
我所拥有的是业务层为我创建了一个视图模型。所以上面的语句现在在业务层如下
If (Role.Equals(“Admin”))
{
ViewModelClassObject.ShowAdminLinks = true;
}
在我的 UI .aspx 层如下
If (model.ShowAdminLinks)
{
<a href=””> Admin Link here</a>
}
现在的问题是,我在一个单独的类库中拥有视图模型类,业务和 Web UI 层都引用了该类库。由于 viewmodel 类还具有映射到 UI 层的文本框的属性,我在其中执行一些验证,如必填字段验证器、比较、范围验证器,我现在需要在我的 ViewModel 类中引用 System.web.mvc 层图书馆。这是不好的编码习惯吗?尽管代码可以编译和构建,但我感觉我可能正在做一些可能是代码味道的事情。或者,我也在考虑将 ViewModel 类移回 Web UI 层,并在 Web 项目中使用某种视图模型构建器,通过调用业务层方法来创建视图模型。
您对此有何看法?