自定义AuthorizeAttribute
我有一个名为CheckArticleExistence的AuthorizeAttribute子类。
我想使用我在动作中收到的参数设置一个属性。 像这样:
[CheckArticleExistence(Id=articleId)] public ActionResult Tags(int articleId) { ... }
我想使用articleId来检查数据库中是否存在该文章,如果不存在,我可以使用OnAuthorization方法触发不同的内容。
有什么办法吗? 谢谢。
我认为您可以从AuthorizationContext获取articleId ,因此您不需要将其作为属性的属性传递。
你可以这样做:
[CheckArticleExistence] public ActionResult Tags(int articleId) { ... }
这个工作了(谢谢!):
[CheckArticleExistence] public ActionResult Tags(int articleId) { ... } ... public class CheckArticleExistenceAttribute : AuthorizeAttribute { private int articleId; public override void OnAuthorization(AuthorizationContext filterContext) { this.articleId = int.Parse(filterContext.RouteData.Values["id"].ToString()); if (!Article.Exists(articleId)) { ... } } }
您可以在存储库中放置一个方法来检查文章是否存在。
public ActionResult Tags(int articleId) { if (repository.ArticleExists(articleID)) { // Do your thing } else { return view("NotFound"); // or do something else } }
或者您可以简单地尝试检索文章,并检查空对象。
public ActionResult Tags(int articleId) { var article = repository.GetArticle(); if (article !=null) { // Do your thing } else { return view("NotFound"); // or do something else } }
- 如何使用HttpWebRequest将数据发布到MVC Controller?
- 为什么CSS和JS文件会绕过Asp.Net MVC路由?
- System.Delegate System.Reflection.MethodInfo.CreateDelegate(System.Type)
- 一劳永逸是什么是处理MVC中的错误,exception和404的最佳路由方法
- MVC Controller返回错误请求?
- WebApi中的C#await / async,重点是什么?
- MVC中的Razor页面在System.Web.Helpers找不到时发出编译错误
- 如何使用EF6在Controller中的属性中获取任何属性的值
- MVC5和SSRS ReportViewer – 如何实施?