我的控制器会将一个项目列表返回给我的视图。当没有要显示消息的项目时,我需要处理这个案例,“没有项目。”
我可以:
我读到视图不应该有任何逻辑,所以纯MVC方式将是#1。我错了,还是被MVC接受了?非常感谢。
答案 0 :(得分:15)
这是一种观点的责任。检查模型上的计数并采取相应措施:
@model IEnumerable<MyViewModel>
@if (Model.Count() > 0)
{
...
}
else
{
<div>Nothing to display here</div>
}
如果您使用的是一些Grid助手,例如MVCContrib Grid,您甚至不需要在视图中使用if
:
@model IEnumerable<MyViewModel>
@Html.Grid(Model)
.Empty("Nothing to display here")
.Columns(column =>
{
...
})
)
答案 1 :(得分:3)
有些人可能不同意,但我认为从视图中删除所有逻辑是不现实的。那是......只要我们谈论视角逻辑。
如果你设置了一条消息,你仍然需要执行一些逻辑来显示该消息,特别是如果你想放弃任何标题,否则你将设置一个空输出。
我建议最重要的是要如何做到这一点......但是这样做对你有意义。只是尽量将逻辑限制在显示数据所需的范围内。
答案 2 :(得分:1)
视图可以包含视图逻辑,但没有业务逻辑。所以你的选项#2应该没问题。
答案 3 :(得分:1)
嗯,你是对的。您的视图不应该有任何逻辑,但您的控制器可以.Howerver简单的条件检查和循环是完全正常的。我个人会检查控制器级别的计数,然后将结果放入viewbag或其他东西。然后我会检查视图中的视图包。