1
我有一個簡單的控制器:兒童行動異常處理
public class RedirectController : Controller {
public ActionResult Index() {
return View();
}
[ChildActionOnly]
public ActionResult Child1() {
return View();
}
[ChildActionOnly]
public ActionResult Child2() {
return View();
}
[ChildActionOnly]
public ActionResult Child3() {
throw new Exception("abc");
}
}
Index.cshtml
...
@Html.Action("Child1")
...
Child1.cshtml
...
@Html.Action("Child2")
...
Child2.cshtml
...
@Html.Action("Child3")
...
Child3會拋出異常 拋出新異常(「abc」) 出於某種原因,我爲error.cshtml設置了佈局,最後導出的內容包含Index.cshtml,Child1.cshtml,Child2.cshtml和Error.cshtml
所以我定義的自定義ExceptionFilter來處理這個異常
public class MyExceptionAttribute : ActionFilterAttribute , IExceptionFilter {
public void OnException(ExceptionContext filterContext) {
...
...
if(filterContext.ParentActionViewContext != null) {
//remove parent actions' exported contents
ViewContext par = filterContext.ParentActionViewContext;
while(null != par){
var wtr = (StringWriter)par.Writer;
wtr.GetStringBuilder().Clear();
par = par.ParentActionViewContext;
}
}
...
...
做過濾,最終輸出HTML刪除「索引」,「Child1」和「CHILD2」的內容,但「佈局」的內容仍然outputed後。
<html>
...(Layout content)
<html>
...(Error.cshtml content)
</html>
</html>
是否有任何方法可以刪除除錯誤內容之外的所有內容?
我不繼。讓你的error.cshtml處理錯誤有什麼問題? –