【问题标题】:Pass a non static value to a actionfilter将非静态值传递给动作过滤器
【发布时间】:2011-01-07 13:03:34
【问题描述】:

有没有办法将非静态值传递给如下所示的 actionfilter 参数?

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

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

【问题讨论】:

    标签: asp.net-mvc action-filter


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        你不能传递它,但你可以这样做:

        public  class TestFilterAttribute : ActionFilterAttribute
        {
        
        
            public string UserId
            {
                get
                {
                    return AppSettings["UserId"];
                }
            }
        
        
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多