2011-11-25 40 views
0

我有以下actionfilter:我可以更新我的模型或從一個ActionFilter內其他類

public class PopulateMetaAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     var a = filterContext.Controller.ViewData.Model. ??? 
     return; 
    } 
} 

我想更新我的模型,或者是剛剛造成的動作過濾器的動作定義的類跑步。我試圖做的是編碼從var a開始的行。所有的工作都很好,直到我找到Model這個詞,然後intellisense沒有給我任何關於領域的建議。

我會以正確的方式進行討論。我想如果我選擇OnActionExecuted,那麼我的方法中的字段將可用。

有人可以解釋我是否可以訪問此模型數據,或者如果我可以更新我的操作方法中的類中的字段。

+0

既然你將需要一個演員,我覺得這是更好地定義你的模型(IMetaModel)與元屬性相應的設置器/吸氣接口。這將使您的屬性在實現相同界面的不同模型中可重用。 – BigMike

回答

0

你可以,但你需要施放它。例如:

var a = filterContext.Controller.ViewData.Model as MyViewModel; 
if (a != null) 
{ 
    a.MyProperty = ...; 
} 
+0

這將是非常好的,如果它的作品。我會嘗試一下並更新希望很快的答案。 –

+0

這是一篇文章,其中使用ActionFilter和Interfaces添加頁面元數據的示例:http://blogs.planetcloud.co.uk/mygreatdiscovery/post/Adding-page-meta-data-with-a-custom-action- filter.aspx – marapet

+0

Works GREAT。謝謝 !! –

相關問題