2010-09-22 45 views
2

下面是我的代碼的簡短版本,它非常基本。在我的頁面模型中,我有一個可傳遞給Action()方法的枚舉字段。問題是,在視圖中調用Html.Action()之前,它不是null。但是,一旦它進入子動作,它就會突然變爲空 - 就好像它沒有被傳入一樣。Html.Action(「MyView」,Model.SomeData)作爲null傳入?

在類似的嘗試中,我試着做Html.Partial(「OverlayAlerts」,Model.Alerts),它仍然通過數據爲空。我不確定這是爲什麼。調試時,在調用Action()(或Partial())方法之前,將會填充警報屬性。有任何想法嗎?謝謝。

PAGE控制器動作

public ActionResult Index() 
{ 
    var model = new DashboardModel() 
    { 
     ... 
     Alerts = GadgetService.GetAlerts() 
     ... 
    }; 

    return View(model); 
} 

MODEL:

public class DashboardModel 
{ 
    ... 
    public IEnumerable<AlertMessage> Alerts { get; set; } 
    ... 
} 

VIEW

<%: Html.Action("GetOverlayAlerts", Model.Alerts)%> 

子操作(同一控制器)

[ChildActionOnly] 
public ActionResult GetOverlayAlerts(IEnumerable<AlertMessage> alerts) 
{ 
    alerts.Any(); // <--- FAILS: alerts is passed through as null? 
} 

回答

7

試試這個:

<%: Html.Action("GetOverlayAlerts", new {alerts = Model.Alerts})%> 
+0

奏效!現在,我將如何使用Html.Partial()直接傳入視圖? – 2010-09-22 19:50:14

+0

@Ryan:如果你願意,你可以把它作爲一個新問題發佈。 – Timwi 2010-09-22 20:00:33