加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:50:06 所属栏目:百科 来源:网络整理
导读:我有一个强类型的局部视图,其模型包含一个与父页面视图模型同名的属性.出于某种原因,渲染引擎渲染父视图模型值,而不是预期值(嗯,至少我期望的值!) 父页面视图模型提取: public class ParentPageViewModel{ public int Id { get; set; } // problem propert
我有一个强类型的局部视图,其模型包含一个与父页面视图模型同名的属性.出于某种原因,渲染引擎渲染父视图模型值,而不是预期值(嗯,至少我期望的值!)

父页面视图模型提取:

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验证/发布表格行的更新)

谢谢,

蒂姆

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读