【发布时间】:2014-08-19 00:49:56
【问题描述】:
我似乎在使用 Child Actions 吞下很多异常。
[ChildActionOnly]
[OutputCache(Duration = 1200, VaryByParam = "key;param")]
public ActionResult ChildPart(int key, string param)
{
try
{
var model = DoRiskyExceptionProneThing(key, param)
return View("_ChildPart", model);
}
catch (Exception ex)
{
// Log to elmah using a helper method
ErrorLog.LogError(ex, "Child Action Error ");
// return a pretty bit of HTML to avoid a whitescreen of death on the client
return View("_ChildActionOnlyError");
}
}
我觉得我在剪切和粘贴成堆的代码,每次剪切粘贴我们都知道一只小猫正被天使的眼泪淹没。
是否有更好的方法来管理子操作中的异常,以允许屏幕的其余部分正确呈现?
【问题讨论】:
-
你在这里发现了什么样的异常?
-
任何异常,我继承了一些非常丑陋的代码。问题是,如果子操作中没有捕获异常,则整个屏幕都不会呈现。我能够让事情以这种方式运行并收集有关引发异常的证据。大多数例外似乎是数据丢失之类的。
-
我会考虑在自定义操作过滤器中执行这些操作,该过滤器可以与您的所有操作共享。
-
那么如何将我的操作方法逻辑包装在操作过滤器中?
-
Rvan 的回答使用了一种动作过滤器。
标签: c# asp.net-mvc child-actions