0

我需要在 asp.net 中创建一个自定义控制器属性,以检查是否设置了特定的会话变量。这不是用于身份验证。如果没有设置 var,那么我需要重定向到不同的视图。

public class CheckPatientSetAttribute : Attribute
{
    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        throw new NotImplementedException();
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Session["Patient"] == null)
        {
            filterContext.HttpContext.Response.Redirect("/");
        }
    }
}

在这种情况下应该使用属性吗?

4

1 回答 1

1

我认为在这种情况下使用属性是一种矫枉过正的做法。它会起作用,不要误会我的意思,它只是不是真正的装饰,也不是某些模型的某些属性的属性,而是属于业务逻辑层的业务逻辑。如果这部分重复了几次,则将其外部化为单独的方法或类,基于实用性和便于他人理解。我认为Attribute这并不容易理解,但实际上比有用更具误导性。恕我直言。

像往常一样,您的问题没有正确的答案,所有这些都基于实用性、可用性和以后易于理解(维护)。

于 2012-09-21T20:10:39.737 回答