尝试捕捉视图不好的做法?

时间:2012-03-23 19:29:51

标签: asp.net-mvc-3 view razor try-catch

在MVC3应用程序中,在@{ }视图中的剃刀块.cshtml内使用try catch块被认为是不好的做法吗?

6 个答案:

答案 0 :(得分:13)

非常。

视图不应包含任何真实的逻辑;任何可能引发异常的东西都属于控制器。

答案 1 :(得分:3)

@{
try
{
    <td>
        @((TradeType)Enum.Parse(typeof(TradeType), item.AppCode)).GetDescription();
    </td>
}
catch
{
    <td>@item.AppCode
    </td>
}
}

答案 2 :(得分:2)

您的使用取决于您的应用程序的具体情况,但您应尽量保持您的观点。理想情况下,代码有效性将在控制器中得到验证,并且永远不会传递给视图。

答案 3 :(得分:2)

不要将此类代码放入Views中。视图应尽可能仅用于显示标记。您可以在控制器操作方法中放置try catch,该方法将数据提供给视图。

public ActionResult GetUser(int id)
{

  try
  {
    //Get the ViewModel and return the correct View.
  }
  catch(Exception ex)
  {
    //log the error
    return View("YourErrorView");
  }   

}

请记住,MVC强调的一个问题是关注点的分离。视图应该是干净且可读的标记。

答案 4 :(得分:1)

我会这么说。最佳路由是将模型传递给控制器​​在到达视图之前验证的视图。

答案 5 :(得分:0)

这不是一件好事。 MVC框架旨在用逻辑分隔视图。因此,在控制器中保持逻辑应该存在的位置。