Доступ к родительской модели с частичного просмотра
Я прошу, потому что частичное представление, которое я создам, пуст, с целью создания нового дочернего объекта. Мне просто нужно быстро, независимо от того, грязный, способ доступа к родительской модели из частичного представления. Мне нужен идентификатор родителя.
Есть ли у частичного представления автоматически доступ к модели родителя?
Ответы
Ответ 1
Вы не можете получить доступ к родительской модели из частичного представления, если вы не передадите какое-то значение этому частичному параметру при его рендеринге. Например, в главном представлении:
@model MyViewModel
...
@Html.Partial("_myPartial", new ViewDataDictionary(new { id = Model.Id }));
а затем внутри частичного доступа вы можете получить доступ к Id
:
<div>@ViewBag.Id</div>
Конечно, это довольно отвратительный способ передачи данных на частичный вид. Правильный способ - использовать сильно типизированную модель представления.
Ответ 2
Я знаю, что это старая тема, но я решил, что просто добавлю свое решение к той же самой проблеме. Я думаю, что это немного чище.
В принципе добавьте модель в частичный вид.
Инкапсулирующий вид:
@model whatever
...
@Html.Partial("partialview", anotherwhatever)
Частичный вид:
@model anotherwhatever
<div>@Model.something</div>
...
В моем случае мне просто нужно было передать строку в частичное представление (просто используя его для сокращения и кода раздела), так что это было намного более элегантно, чем другое решение.
Сначала я попробовал другое решение и фактически не смог заставить его работать, он просто действовал так, как будто переданное мной значение было пустым.
Ответ 3
Это работало для меня.
@model MyViewModel
...
@Html.Partial("_myPartial", new ViewDataDictionary { { "id", Model.Id } })
И внутри частичного представления используется это...
<div>@ViewBag.id</div>