2016-06-14 211 views
2

我做了一些快速的谷歌搜索,并没有想出任何方式来做到这一点,所以我很抱歉,如果这个问题是重复的。是否可以在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

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

+3

创建一个构造函数,采用了'address'作为参数。 –

+0

看起来像那样的作品。如果你把它写成答案,我会接受它。另外,如果您知道任何有关Asp.Net属性的相关信息来源,我会很高兴收到这些信息。谢谢。 –

+0

这是一个重复的,但它会很高兴看到一个5.0 ++实现... http://stackoverflow.com/a/10794405/2496266 –

回答

3

我想你想使用一个构造函数来设置属性属性(或域),因此这样的事情:

public class AuthorizeAttribute : ActionFilterAttibute 
{ 
    private readonly string _attribute; 

    public AuthorizeAttribute(string attribute) 
    { 
     _attribute = attribute; 
    } 
} 
相关问题