MVC RenderPartial模型始终为null

时间:2016-03-09 08:09:34

标签: c# asp.net-mvc

我尝试制作部分视图,实际上它有效,但当我尝试将代码放入html时,我总是会遇到 Nullable 错误。 这项工作:

public PartialViewResult Notification()
{
    ViewBag.Notification = db.Notification.ToList();
    return PartialView("Notification");
}

@Html.Action("Notification", "Project");

但是当我试图这样做时:

public PartialViewResult Notification()
{
    ViewBag.Notification = db.Notification.ToList();
    return PartialView("Notification");
}

@Html.RenderPartial("Notification", "Project");

@Html.RenderPartial("Notification", "Project");

此类代码为我提供了 Nullable 错误

这是我的PartialView

@{
    foreach (var item in ViewBag.Notification)
    {
         @item.Name
    }
}

2 个答案:

答案 0 :(得分:0)

如果你想使用@html.RenderPartail,那么这个ViewBag的东西将不起作用,因为这不会触及动作,你仍然要使用它然后你应该在@Html.RendrePartial本身传递一个模型对象。

答案 1 :(得分:0)

如果您想使用@Html.RenderPartial,则不再需要通知操作。

当你使用@Html.Action时,你必须处理流程,你将呈现什么样的视图,它将是什么样的模型以及其他...

当您致电@Html.RenderPartial时,您要求使用微软代码来处理流程,它会这样做,它会像您使用@Html.Action一样提供您想要的视图,您只需要填写parammeters。

我想你要呈现的这个局部视图是一个非打字的,好吧。

你应该这样做:

查看操作

public ActionResult PreviousAction()
        {    
            ViewBag.Notification = db.Notification.ToList();    
            return View();
        }

查看代码

@ {Html.RenderPartial( “通知”);}

您传递的参数通知,不再是动作名称,现在它是要求微软代码呈现的部分视图的名称。

部分查看代码

在局部视图中,您拥有当前的代码:

@{
    foreach (var item in ViewBag.Notification)
    {
         @item
    }    
}