Html.Action("MyView",Model.SomeData)作为null传入?

Rya*_*ers 2 c# asp.net-mvc

下面是我的代码的简短版本,它是非常基本的.在我的页面模型中,我有一个可枚举的字段,我将其传递给Action()方法.问题是,在视图中调用Html.Action()之前,它不是null.但是,一旦它在子动作中,它突然变为空 - 好像它没有被传入.

在类似的尝试中,我尝试了Html.Partial("OverlayAlerts",Model.Alerts),它仍然将数据传递为null.我不确定为什么会这样.在调试时,会在调用Action()(或Partial())方法之前填充Alerts属性.有任何想法吗?谢谢.

页面控制器操作

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

    return View(model); 
}
Run Code Online (Sandbox Code Playgroud)

模型:

public class DashboardModel
{
    ...
    public IEnumerable<AlertMessage> Alerts { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

视图

<%: Html.Action("GetOverlayAlerts", Model.Alerts)%>
Run Code Online (Sandbox Code Playgroud)

儿童行动(同一控制器)

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

小智 7

试试这个:

<%: Html.Action("GetOverlayAlerts", new {alerts = Model.Alerts})%>
Run Code Online (Sandbox Code Playgroud)