是否有任何方式將非靜態值傳遞給下面的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"];
}
}
}