Неверное значение свойства модели отображается в частичном представлении

У меня есть строго -типизированное частичное представление, модель которого содержит свойство с тем же именем, что и модель представления родительской страницы. По какой-то причине механизм рендеринга рендерит значение модели родительского представления, а не ожидаемое значение (ну, по крайней мере, то значение, которое я ожидаю!)

Извлечение модели представления родительской страницы:

public class ParentPageViewModel
{
    public int Id { get; set; } // problem property
   ...
    public IEnumerable<ChildViewModel> Children { get; set; }
}

Извлечение модели просмотра дочерней страницы:

public class ChildViewModel
{
    public int Id { get; set; } // problem property
   ...
}

Извлечение родительской страницы (Razor):

@model ParentPageViewModel
...
@foreach (var item in Model.Children)
{
    @Html.Partial("MyPartialView", item)
}
...

Извлечение частичного представления:

@model ChildViewModel
...
<form...>
    @Html.HiddenFor(m => m.Id) // problem here - get ParentPageViewModel.ID not ChildViewModel.Id
</form>
...

Таким образом, в основном в моем отображаемом выводе мое скрытое поле имеет значение элемента модели родительского представления, а НЕ значение, переданное частичному представлению. Это определенно вызвано именем, поскольку изменение имени @ChildViewModel.Id@ на что-то вроде @ChildViewModel.ChildId@ заставляет его работать должным образом. Интересно, что при проверке значений модели представления в отладчике я вижу правильные значения; это только визуализированный вывод, который неверен.

Есть ли способ обойти это или «правильный» способ сделать то, что я пытаюсь сделать (Я отображаю мини-формы в таблице для проверки/публикации обновлений строк таблицы ajax)

Спасибо,

Тим

6
задан Tim Croydon 7 August 2012 в 10:16
поделиться