ActionResult上的自定义属性

时间:2009-10-08 03:52:10

标签: asp.net-mvc custom-attributes

这可能是一个新手问题,但是;

假设我有一个ActionResult,我只想在下班后授予访问权限。

我们还要说我想用自定义属性装饰我的ActionResult。

所以代码可能看起来像;

[AllowAccess(after="17:00:00", before="08:00:00")]
public ActionResult AfterHoursPage()
{
    //Do something not so interesting here;

    return View();
}

完全如何才能让它发挥作用?

我已经完成了一些关于创建自定义属性的研究,但我认为我对如何使用它们感到遗憾。

请假设我对创建和使用它们几乎一无所知。

2 个答案:

答案 0 :(得分:14)

试试这个(未经测试):

public class AllowAccessAttribute : AuthorizeAttribute
{
    public DateTime before;
    public DateTime after;

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext == null)
            throw new ArgumentNullException("httpContext");

        DateTime current = DateTime.Now;

        if (current < before | current > after)
            return false;

        return true;
    }
}

更多信息: http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/

答案 1 :(得分:2)

您在.net mvc中寻找的是动作过滤器。

您需要扩展ActionFilterAttribute类并在您的案例中实现OnActionExecuting方法。

请参阅: http://www.asp.net/learn/mvc/tutorial-14-cs.aspx可以很好地介绍行动过滤器。

对于略微相似的内容,请参阅:ASP.NET MVC - CustomeAuthorize filter action using an external website for loggin in the user