我有一个强类型的局部视图,其模型包含与父页面的视图模型同名的属性。由于某种原因,渲染引擎正在渲染父视图模型值,而不是预期值(嗯,至少是我期望的值!)
父页面视图模型提取:
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 验证/发布对表格行的更新)
谢谢,
蒂姆