Пропустить сумку просмотра до частичного просмотра с контроллера действия
У меня есть представление 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);