【发布时间】:2012-03-10 21:46:12
【问题描述】:
如果请求无效,我有一个 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);
}
}
现在因为属性在控制器动作触发之前运行,我永远无法“捕捉”控制器中的错误,因此我无法将错误传递给视图。
我怎样才能做到这一点?
【问题讨论】:
标签: asp.net-mvc-3 error-handling custom-attributes