我想对this question's接受的答案发表评论,“现在还没有查看废弃的代码?那么你要测试什么?”指出它似乎我一添加一个
<% if (Model.Thing == "abc") {} %>
或
@if (Model.Thing == "abc") {}
在你看来,存在爆炸的可能性,应该防范这种潜力。
关于我链接的问题,我可以看到一个论点,即应该防止代码隐藏中出现空引用异常的可能性,而不是用空检查乱丢一个人的视图,但那么情况怎么样部分观点?在视图本身中可能呈现部分视图而不是一个地方的众多地方添加多个空检查真的会更好吗?
答案 0 :(得分:2)
IMO,如果你期望值为null,oob等,你应该只在视图中防范null,index oob等。
理想情况下,您应该对您的操作方法进行单元测试,以确保某些模型值不为null / in bounds /等。如果某个值可能为null,那么您可能有充分的理由进行空检查在一个视图中。否则,它是无用的代码。
答案 1 :(得分:2)
尝试摆脱Webforms代码隐藏思维方式。应该在Controller中处理Model数据的空值检查。对于那种检查,View应该包含最小(或没有)逻辑。
public ActionResult YourAction(YourModel ym)
{
if (ym.Thing != null)
return View(ym);
else
return View();
}
或者您必须对数据进行何种类型的检查。在您的视图中,通过检查模型数据不会乱七八糟。它是MVC设计中 关注点分离 的全部内容。
答案 2 :(得分:1)
如果没有法律条件,模型或模型的属性应该为null,那么我会说你的单元测试,而不是你的观点应该强制执行。如果某些情况下模型可以为null或包含null属性,那么请务必检查此IF,以便您可以调整显示。您仍然需要防范业务逻辑,而不是显示逻辑(其中一些可能与业务规则相关),泄漏到您的视图中。