【发布时间】:2011-01-07 13:03:34
【问题描述】:
有没有办法将非静态值传递给如下所示的 actionfilter 参数?
public class ProcuctController : Controller
{
private int userID = 1;
[TestFilter(x=userID)]
public ActionResult Index()
{
}
}
【问题讨论】:
有没有办法将非静态值传递给如下所示的 actionfilter 参数?
public class ProcuctController : Controller
{
private int userID = 1;
[TestFilter(x=userID)]
public ActionResult Index()
{
}
}
【问题讨论】:
不,没有。属性被烘焙到生成的程序集的元数据中,并且在编译时应该知道所有值。您只能将常量值作为属性属性传递。这是 .NET 的限制,而不是 MVC。
【讨论】:
根据情况,您总是可以将某种键传递给过滤器,然后在过滤器中,您可以在您喜欢的任何数据源中查找相应的值。这将允许您在方法中获取非静态数据,但如果它像您的示例一样简单会很好:-)
【讨论】:
你不能传递它,但你可以这样做:
public class TestFilterAttribute : ActionFilterAttribute
{
public string UserId
{
get
{
return AppSettings["UserId"];
}
}
}
【讨论】: