2014-11-06 5 views
0

Я хочу создать фильтр действий, который проверяет, что пользователь создал какой-либо контент. Если они этого не сделают, я хотел бы предотвратить выполнение действия и вернуть ошибку.Предотвращение выполнения в действии Фильтр

Это то, что я до сих пор:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Http.Controllers; 
using System.Web.Http.Filters; 
using uQuiz.Domain.Abstract; 
using uQuiz.WebUI.Helpers; 
using Microsoft.AspNet.Identity; 
using System.Net.Http; 
using System.Net; 

namespace uQuiz.WebUI.Controllers.Filters 
{ 
    /// <summary> 
    /// Determines whether the current logged in user has permission to edit the quiz requested 
    /// </summary> 
    public class CanEditQuiz : ActionFilterAttribute 
    { 
     IQuizEntities Context; 

     public CanEditQuiz() 
     { 

     } 

     public CanEditQuiz(IQuizEntities context) 
     { 
      this.Context = context; 
     } 

     public override void OnActionExecuting(HttpActionContext actionContext) 
     { 
      // Get the URL ID from the request 
      string urlId = actionContext.ModelState["urlId"].Value.ToString(); 
      int userId = HttpContext.Current.User.Identity.GetUserId<int>(); 

      if (!QuizHelper.IsQuizOwner(this.Context, urlId, userId)) 
      { 
       // Prevent action executing 
      } 

      base.OnActionExecuting(actionContext); 
     } 
    } 
} 

Я видел other questions упоминая установить Result к null, но когда я отменяю метод OnActionExecuting имеет HttpActionContext и не ActionExecutingContext по какой-то причине?

Как предотвратить действие?

ответ

2

Вы должны использовать

System.Web.Mvc.ActionFilterAttribute 

не

System.Web.Http.Filters.ActionFilterAttribute 
+0

Спасибо, я изменил мои используя операторы и переопределение теперь правильно. – Luke