use*_*446 4 c# asp.net-mvc entity-framework razor
我试图在我的视图中显示对象的属性(如果存在),否则回退到默认值,例如
@if(Product.Description != null && Product.Description.Color != null){
<li>@Product.Description.Color</li>
}
Run Code Online (Sandbox Code Playgroud)
这样做的问题是,如果我在视图中进行空检查,则ObjectContext已经为Product.Description处理,如果它不存在并且抛出异常.
我应该在控制器中分配默认值/后退还是有办法在视图中处理此问题?
不要向视图发送"实时"对象.如果您这样做,则可以有效地混合UI和数据层.请记住,控制器在渲染视图时已完成执行.
而是发送一个副本,其中包含您需要在视图中使用的属性.
我知道有些书建议M VC 中的"M" 代表"Domain M odel",他们建议这应该是一个实体框架实体的实例.我不同意,并认为混合责任.
我很幸运使用了" AutoMapper "工具,它可以很容易地从EF实体的属性和您在视图中使用的模型(ViewModel)的属性进行映射.