将非静态值传递给actionfilter

时间:2011-01-07 13:03:34

标签: asp.net-mvc action-filter

有没有办法将非静态值传递给动作过滤器参数,如下所示?

public class ProcuctController : Controller
{
    private int userID = 1;

    [TestFilter(x=userID)]
    public ActionResult Index()
    {
    }
}

3 个答案:

答案 0 :(得分:1)

不,没有。属性被烘焙到生成的程序集的元数据中,并且所有值都应在编译时知道。您只能将常量值作为属性属性传递。那是.NET限制,而不是MVC。

答案 1 :(得分:1)

根据具体情况,您可以随时将某种键传递给过滤器,然后在过滤器内部,您可以在您喜欢的任何数据源中查找相应的值。这将允许您在方法中获取非静态数据,但如果它像您的示例一样简单会很好: - )

答案 2 :(得分:1)

你无法传递它,但你可以做类似的事情:

public  class TestFilterAttribute : ActionFilterAttribute
{


    public string UserId
    {
        get
        {
            return AppSettings["UserId"];
        }
    }



}