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

Я прошу, потому что частичное представление, которое я создам, пуст, с целью создания нового дочернего объекта. Мне просто нужно быстро, независимо от того, грязный, способ доступа к родительской модели из частичного представления. Мне нужен идентификатор родителя.

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

Ответ 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>