【发布时间】:2013-05-24 16:30:03
【问题描述】:
我有一个 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 项目中使用某种视图模型构建器,通过调用业务层方法来创建视图模型。这样就不需要有一个单独的 ViewModel 类库来引用 System.Web.MVC dll,我的控制器可以调用这个视图模型构建器类来构建视图模型
您对此有何看法?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-4 razor web-standards