Пропустить сумку просмотра до частичного просмотра с контроллера действия

У меня есть представление mvc с частичным представлением. В контроллере есть метод ActionResult, который вернет PartialView. Итак, мне нужно передать данные ViewBag из этого метода ActionResult в Partial View.

Это мой контроллер

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

В Index.cshtml View

@Html.Partial("Step1")

Частичный просмотр Step1.cshtml

@ViewBag.Hello

Но это не работает. Итак, каков правильный способ получить данные из viewbag. Я думаю, что следую неправильному методу. Пожалуйста, направляйте меня.

Ответ 1

"Действия ребенка следуют другому жизненному циклу контроллера/модели/представления, чем родительские действия. В результате они не делят ViewData/ViewBag."

Ответ предоставляет альтернативный способ передачи данных.

Имеет ли дочернее действие один и тот же ViewBag с его "родителями" ? действие?

Ответ 2

Вы можете использовать его, как указано ниже:

В вашем представлении:

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

И ваш частичный вид:

@model String

<b>@Model</b>

Как показано выше ViewBag.Message будет передано на частичный вид. и в вашем частичном представлении вы можете использовать его как @Model.

Примечание: здесь тип ViewBag.Message - строка. Вы можете передать любой тип.

Ответ 3

Если вам не нужно использовать ViewBag, вы можете использовать TempData. TempData используется для всей цепочки выполнения.

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

В Index.cshtml View

@Html.Partial("Step1")

Частичный просмотр Step1.cshtml

@TempData["Hello"]

Ответ 4

Вы можете попробовать это, чтобы передать ViewBag для частичного просмотра из действия:

Ваш контроллер:

public class PropertyController : Controller
{
    public ActionResult Index()
    {
        return View();
    }


    public ActionResult Step1()
    {
        ViewBag.Hello = "Hello";

        return PartialView("_Partial1", ViewBag.Hello);
    }
}

Ваше мнение (Index.cshtml):

@Html.Action("Step1")

Ваше частичное представление (_Partial1.cshtml):

@ViewBag.Hello

Ответ 5

return PartialView("partialviewname", obj);