2011-01-14 39 views
3

試圖避免在這裏重複。我有一個基礎控制器的操作,我不允許修改。我希望我的操作能夠執行一些檢查,調用基類操作,並在呈現之前以某種方式修改結果。但我需要做的一部分涉及修改ViewModel的某些屬性,而基類返回ActionResult。我沒有辦法從ActionResult得到ViewModel,所以我可能不得不編寫一個自定義方法,其中大部分只會模仿基類正在做什麼。我寧願不這樣做。有什麼建議麼?我可以從ActionResult檢索ViewModel嗎?

回答

8

這是因爲ActionResult是一個相當高級的基類。嘗試將其轉換爲適當的子類型,例如ViewResult

快速示例代碼:

public ActionResult WrapperAction() 
    { 
     // do your initial stuff 


     // call your base controller action and cast the result 
     // it would be safer to test for various result types and handle accordingly 
     ViewResult result = (ViewResult)base.SomeAction(); 

     object model = result.ViewData.Model; 

     // do something with the model 

     return result; 
    } 
+0

謝謝,這可能工作:) – Samo 2011-01-14 21:57:20

相關問題