1
我有一个ActionFilterAttribute
,如果请求无效,则会引发错误。如何在从属性抛出控制器时捕获错误?
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AjaxOnlyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if((!filterContext.HttpContext.Request.IsAjaxRequest() ||
!filterContext.HttpContext.Request.IsXMLHttpRequest()) &&
(!filterContext.HttpContext.Request.IsLocal))
{
throw new InvalidOperationException("This operation can only be accessed via Ajax requests.");
}
}
}
现在在我的控制,我想捕捉错误,并把它传递给视图
[AjaxOnly]
public JsonpResult List()
{
try
{
var vimeoService = new VimeoService();
var videos = vimeoService.GetVideosFromChannel(this._vimeoChannelId);
return this.Jsonp(videos);
}
catch (Exception ex)
{
var err = new ErrorsModel() { ErrorMessage = ex.Message };
return this.Jsonp(err, false);
}
}
现在因为属性控制器动作火灾之前运行,我绝不能“抓“控制器中的错误,从而我无法将错误传递给视图。
我该如何做到这一点?
这是我遇到过的MVC中的错误处理的第一个例子,我可以复制+粘贴并实际工作。荣誉给你。 – Graham 2012-10-03 15:08:36