将viewbag传递给动作控制器的局部视图

我有一个带有局部视图的mvc视图。控制器中有一个ActionResult方法,它将返回一个PartialView。 所以,我需要从该ActionResult方法传递ViewBag数据到Partial View。

这是我的控制器

public class PropertyController : BaseController
{
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult Step1()
    {
        ViewBag.Hello = "Hello";
        return PartialView();
    }
}

在Index.cshtml查看

@Html.Partial("Step1")

Step1.cshtml部分视图

@ViewBag.Hello

但是这不起作用。 那么,从viewbag获取数据的正确方法是什么? 我认为我在跟错方法。 请指导我。


“子动作遵循与父动作不同的控制器/模型/视图生命周期,因此它们不共享ViewData / ViewBag。”

答案提供了一种传递数据的替代方法。

儿童动作是否与其“父母”动作共享相同的ViewBag?


你可以使用它如下所述:

在你的View中:

@Html.Partial("[ViewName]", (string)ViewBag.Message)

和你的部分观点:

@model String

<b>@Model</b>

如上所示,ViewBag.Message将被传递给局部视图。 并在你的部分视图中,你可以使用它作为@Model

注意:这里的ViewBag.Message类型是字符串 。 你可以通过任何类型。


如果您不必使用ViewBag,则可以使用TempData。 TempData是整个执行链共享的。

public class PropertyController : BaseController
{
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult Step1()
    {
        TempData["Hello"] = "Hello";
        return PartialView();
    }
}

在Index.cshtml查看

@Html.Partial("Step1")

Step1.cshtml部分视图

@TempData["Hello"]
链接地址: http://www.djcxy.com/p/42097.html

上一篇: Pass viewbag to partial view from action controller

下一篇: Forms Authentication & authorization MVC 4