有没有办法将非静态值传递给动作过滤器参数,如下所示?
public class ProcuctController : Controller
{
private int userID = 1;
[TestFilter(x=userID)]
public ActionResult Index()
{
}
}
答案 0 :(得分:1)
不,没有。属性被烘焙到生成的程序集的元数据中,并且所有值都应在编译时知道。您只能将常量值作为属性属性传递。那是.NET限制,而不是MVC。
答案 1 :(得分:1)
根据具体情况,您可以随时将某种键传递给过滤器,然后在过滤器内部,您可以在您喜欢的任何数据源中查找相应的值。这将允许您在方法中获取非静态数据,但如果它像您的示例一样简单会很好: - )
答案 2 :(得分:1)
你无法传递它,但你可以做类似的事情:
public class TestFilterAttribute : ActionFilterAttribute
{
public string UserId
{
get
{
return AppSettings["UserId"];
}
}
}