2

我想使用變量將動態值傳遞給我的動作過濾器。我認爲它會是這樣的:如何將動態變量傳遞給ASP.NET MVC中的動作過濾器

[MessageActionFilter(message = "User is updating item: " & id)] 
public ActionResult doSomething(int id) 
{ 
    // do something 
} 

但是,似乎該參數必須是一個常數值。因此,我的問題是如何獲得變量到我的動作過濾器?

回答

2

您可以使用ActionExecutingContext.ActionParameters屬性在OnActionExecuting中獲取參數值。

這只是一個僞代碼,但是比如你可以retrive參數名爲id

public class MessageActionFilter: ActionFilterAttribute 
{  
    public override void OnActionExecuting(ActionExecutingContext filterContext)  
    {   
     var response = filterContext.HttpContext.Response;     

     var parameterValue = filterContext.ActionParameters.SingleOrDefault(p => p.Key == "id"); 

     // check if not null before writing a message 

     response.Write(this.Message + parameterValue); // prints "User is updating item: <idvalue>" 
    } 

    public string Message {get; set;} 
} 

告訴我,如果它幫助。

+0

謝謝!我無法使用SingleOrDefault,只是使用ActionParameters [「id」]來獲取值。 – Jason 2011-12-16 19:18:43

相關問題