是否可以在ASP.Net属性中设置必需的属性?

时间:2016-06-14 20:21:39

标签: c# asp.net

我做了一些快速的谷歌搜索并没有想出任何方法来做到这一点,所以如果这个问题是重复,我道歉。

我有一个类:

using System.Web;
using System.Web.Mvc;

namespace Authorization
{
    public class AuthorizeAttribute : ActionFilterAttibute
    {
        public string Address { get; set; }

        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (HttpContext.Current.Request.UserHostAddress != Address)
                context.Result = new HttpStatusCodeResult(403);

            base.OnActionExecuting(context);
        }
    }
}

问题在于,无论何时将此属性添加到项目中的其他类,都可以通过两种方式进行定义。第一种方法基本上就像调用属性的默认构造函数一样;没有数据传入。第二种方式允许指定Address

我有一种感觉,我无法删除第一个选项,因为它可能通过我创建的那个的父类以某种方式指定。但是有可能只有第二种选择吗?这将是理想的。

1 个答案:

答案 0 :(得分:3)

我认为您想使用构造函数来设置Attribute属性(或字段),所以像这样:

public class AuthorizeAttribute : ActionFilterAttibute
{
    private readonly string _attribute;

    public AuthorizeAttribute(string attribute)
    {
        _attribute = attribute;
    }
}