我有followin属性。
我需要这样做:
filterContext.Result
中向浏览器返回一条消息(我想它就是那个地方)但是,在启动debuggind过程之后,调试器会在OnActionExecuting
方法内部执行,我看到错误而不是我的页面。我以为它会在SearchItems
方法之前执行 - 为什么会这样?
public class MyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
bool isValid = false; //some logic here
if (!isValid)
{
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.PaymentRequired;
filterContext.Result = new EmptyResult();
return;
}
base.OnActionExecuting(filterContext);
}
}
的global.asax
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyAttribute());
filters.Add(new HandleErrorAttribute());
}
控制器:
public class MainApiController : ApiController
{
[MyAttribute]
[HttpPost]
public HttpResponseMessage SearchItems()
{
...
}
}
答案 0 :(得分:0)
而不是EmptyResult(),你应该
filterContext.Result = new RedirectResult("/YourRedirect");
或
filterContext.Result = new ViewResult { ViewName = "~/Views/Shared/PaymentRequired.cshtml" };
答案 1 :(得分:0)
我找到了解决方案,结果发现使用的名称空间不正确
而不是
context[indexPath.row] is MyClass
我用过:
public override void OnActionExecuting(ActionExecutingContext filterContext)
现在它按预期工作。