c# – 在局部视图中呈现的模型属性值不正确

前端之家收集整理的这篇文章主要介绍了c# – 在局部视图中呈现的模型属性值不正确前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个强类型的局部视图,其模型包含一个与父页面视图模型同名的属性.出于某种原因,渲染引擎渲染父视图模型值,而不是预期值(嗯,至少我期望的值!)

页面视图模型提取

  1. public class ParentPageviewmodel
  2. {
  3. public int Id { get; set; } // problem property
  4. ...
  5. public IEnumerable<Childviewmodel> Children { get; set; }
  6. }

页面视图模型提取

  1. public class Childviewmodel
  2. {
  3. public int Id { get; set; } // problem property
  4. ...
  5. }

页面提取(Razor):

  1. @model ParentPageviewmodel
  2. ...
  3. @foreach (var item in Model.Children)
  4. {
  5. @Html.Partial("MyPartialView",item)
  6. }
  7. ...

部分视图提取

  1. @model Childviewmodel
  2. ...
  3. <form ...>
  4. @Html.HiddenFor(m => m.Id) // problem here - get ParentPageviewmodel.ID not Childviewmodel.Id
  5. </form>
  6. ...

所以基本上在我的渲染输出中,我的隐藏字段具有父视图模型元素的值,而不是传递给局部视图的值.它肯定是由名称引起的,因为将@ Childviewmodel.Id @的名称更改为类似@ Childviewmodel.ChildId @的内容使其按预期工作.有趣的是,在检查调试器中的视图模型值时,我确实看到了正确的值;它只是渲染的输出错了.

有没有办法围绕这个或’正确’的方式做我正在尝试做的事情(我在表格中渲染迷你表格以进行ajax验证/发布表格行的更新)

谢谢,

蒂姆

解决方法

我认为改变你的呼叫将解决问题:
  1. @Html.Partial("MyPartialView",item,new ViewDataDictionary())

子视图从ViewData字典中获取值 – 因此这会将新字典传递给子视图(hattip danludwig).

猜你在找的C#相关文章