2016-10-14 56 views
0

我有幾個Controller Action方法,我希望在ViewData中包含一組標準數據。 我創建了一個屬性來填充ViewData並用它裝飾我的方法。無法在ActionFilterAttribute中訪問ViewData OnActionExecutingAsync

問題是:System.Net.Http.ActionFilterAttribute在HttpActionExecutedContext中傳遞。 ViewData在哪裏?

和System.Web.Mvc.ActionFilterAttribute不包含異步方法(從我的理解它的壞形式的屬性來使用Task.Wait())

我該怎麼辦?

操作方法是這樣的:從

public sealed class IncludeAdditionalDataAttribute : ActionFilterAttribute 
{ 
    public static Client myClient; 
    public override async Task OnActionExecutedAsync(HttpActionExecutedContext actionContext, CancellationToken cancellationToken) 
    { 
     var results = await myClient.RetrieveData(); 
     // Set ViewData['MoreData'] = results; 
    } 
} 

回答

0

ActionFilterAttribute不具有的ViewData屬性

[IncludeAdditionalData] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

屬性IncludeAdditionalData dertives。您可以通過HttpActionExecutedContext訪問Controller ViewData。請嘗試以下代碼:

actionContext.ActionContext.ControllerContext.Controller.ViewData["MoreData"] = results; 
+0

請添加一些解釋爲什麼此代碼可以幫助OP。這將有助於提供未來觀衆可以從中學習的答案。有關更多信息,請參閱[答案]。 –

+0

好的,我編輯我的答案 –

+0

actionContext.ActionContext.ControllerContext.Controller是IHttpController類型,它不包含ViewData。你能告訴你指的是哪個版本的.NET? – UKM